Wie importiere ich JARs und Pakete in Java?

8

Ich bin relativ neu in Java. Ich habe mit Eclipse gearbeitet, aber ich möchte zu den Grundlagen zurückkehren und einfach einen Texteditor in Verbindung mit dem JDK verwenden. Das Problem, das ich jetzt habe, ist, dass Eclipse und andere IDEs eine Menge fundamentaler Dinge verstecken, was sehr wichtig ist, um es zu verstehen und zu verstehen. Das ist, was ich versuche zu tun:

  • Ich habe ein Verzeichnis namens "C: \ Java Projects" erstellt, unter dem ich 3 Unterordner, Project1, Project2 und SharedJars, erstellt habe. Project1 und Project2 haben beide SubDirs wie Klassen und Quellen. Die Source-Dateien .java von Poject1 befinden sich in "c: \ Java Projects \ Project1 \ source \ com \ myApp"

  • Sowohl Project1 als auch Project2 sind Pakete, die das Log4J-JAR verwenden, das sich im SharedJars-Ordner befindet. In der Eclipse-Welt könnte ich etwas festlegen, das Eclipse mitteilt, welche JARs mein Projekt verwenden wird, und dann etwas wie org.apache.log4j.Logger importieren, was gut funktioniert hat. Aber ich kämpfe darum, dass das funktioniert.

  • Ich habe die CLASSPATH-Umgebungsvariable wie "C: \ Java Projects \ SharedJars \ log4j-1.2.15.jar"

  • festgelegt
  • Ich mache dann folgendes:

    cd Project1 \ source
    javac -d .. \ classes com \ myApp \ *

  • Dies erzeugt eine ganze Reihe zusammenhängender Fehler wie

Abgerufen _JAVA_OPTIONS: -Duser.home="C: \ Java Projects"
com \ myApp \ Monitor.java: 11: kann das Symbol
nicht finden Symbol: Klasse Logger
location: Klasse com.myApp.Monitor
        private statische Logger LOG;

Einige Fragen: 1) Muss ich org.apache.log4j.Logger noch importieren? 2) Wenn ja, was bestimmt den FQDN des Pakets? 3) Muss ich in einem bestimmten Verzeichnis sein, um javac ausführen zu können? Zur Zeit gehe ich in das Quellverzeichnis von Project1 (das Java / Bin ist bereits in meinem PATH)

Entschuldige diese dummen Fragen. Ich habe so viele Websites durchforstet, aber viele decken nicht die Grundlagen ab. Ich hoffe, das macht Sinn.

Rgds John

    
Wilko 08.09.2010, 12:02
quelle

3 Antworten

4

Willkommen bei SO.

Als Antwort darauf:

  

Muss ich noch org.apache.log4j.Logger importieren?

Ja, Sie müssen immer Import-Direktiven für jede Klasse verwenden, die Sie verwenden möchten. Java lädt nichts, selbst wenn es auf dem Klassenpfad steht, es sei denn, Sie sagen es ihm.

  

Wenn ja, was bestimmt den FQDN des Pakets?

Innerhalb des Jar befinden sich die .class-Dateien in Unterverzeichnissen wie diesem: org/apache/log4j ... usw. So wird der FQDN bestimmt und er wird grundsätzlich als Namespace-Konstrukt verwendet, so dass Sie zwei oder mehr Klassen davon haben können Name - deshalb kann Java auch nicht alles auf dem Klassenpfad laden. Wenn es so wäre, hätte es keine Möglichkeit, zu disambiguieren und herauszufinden, welche Klasse Sie wollten.

  

Muss ich in einem bestimmten Verzeichnis sein, um javac ausführen zu können?

Nein. Sie können dies von überall ausführen, vorausgesetzt, der Klassenpfad kann von wo auch immer Sie kommen, zu Ihren Abhängigkeiten gelangen. Es könnte ein relativer Klassenpfad sein, wenn er in der Befehlszeile oder absolut in einer Umgebungsvariablen angegeben wird. Ebenso müssen Sie sich nicht in einem bestimmten Verzeichnis befinden, um java zu verwenden, aber Sie benötigen es, um an den richtigen Ort zu gelangen.

    
user257111 08.09.2010 12:12
quelle
1
  
    

1) Muss ich noch org.apache.log4j.Logger importieren?

  

Ja, und das sollte den Fehler in Ihrer Frage beheben, weil Ihre CLASSPATH korrekt ist.

  
    

2) Wenn ja, was bestimmt den FQDN des Pakets?

  

Der import ändert den FQDN des Pakets nicht. Es erlaubt Ihnen nur, auf org.apache.log4j.Logger einfach als Logger innerhalb dieser Datei zu verweisen.

  
    

3) Muss ich in einem bestimmten Verzeichnis sein, um javac auszuführen?

  

Nein, aber es ist am einfachsten, wenn das aktuelle Verzeichnis das Verzeichnis source des Projekts ist, das Sie kompilieren (wenn dies nicht der Fall wäre, könnten Sie es mit der Option -sourcepath auf javac umgehen.)

Wie für das Ausführen des Programms möchten Sie möglicherweise ein Project1.jar erstellen und das Manifest verwenden, um es zu sagen, wo log4j.jar zu finden ist, aber das ist finnw 08.09.2010 12:11

quelle
0

Ich poste meine Lösung, weil keine der obigen Lösungen für mich geeignet war. Es funktioniert für mich unter Windows XP / 7.

LÖSUNG

  1. Laden Sie das zip- oder tar-Paket von der log4j-Site [1] auf Ihren Computer & amp; Entpacke die heruntergeladene Datei.
  2. Kopieren Sie die Datei log4j-VERSION.jar in Ihr LOG4J_ISTALLATION_DIR (z. B. c: \ javalibs \ log4j-1.2.16.jar)
  3. Öffnen Sie die Eigenschaften von "Mein Computer / Computer" (das Symbol sollte auf Ihrem Desktop platziert werden, klicken Sie einfach mit der rechten Maustaste darauf und wählen Sie Eigenschaften)
  4. Öffnen Sie die Registerkarte "Erweiterte Systemeinstellungen".
  5. Öffnen Sie die Registerkarte "Erweitert"
  6. Klicken Sie auf die Schaltfläche "Umgebungsvariablen".
  7. Suchen Sie im Bereich "Umgebungsvariablen" die Variable CLASSPATH, passen Sie sie mit der linken Schaltfläche an und klicken Sie auf die Schaltfläche "Bearbeiten".
  8. Fügen Sie den Pfad zu Ihrer log4j-Bibliothek ein - LOG4J_ISTALLATION_DIR \ log4j-VERSION.jar; (z.B. c: \ javalibs \ log4j-1.2.16.jar;)
  9. Klicken Sie auf "OK".
  10. Klicken Sie auf die Schaltfläche "OK" im Fenster "Umgebungsvariablen".
  11. Klicken Sie auf die Schaltfläche "OK" im Fenster "Systemeigenschaften".
  12. Gehen Sie zur Befehlszeile und überprüfen Sie, ob alles funktioniert, indem Sie ein Beispiel aus dem log4j-Kurzanleitung (attachede unten) ausprobieren:

      

    cd c: \ Benutzer \ Benutzer \ log4j
      javac MyApp2.java
      2012-03-30 21:32 510 Bar.class
      2012-03-30 21:24 177 Bar.java
      2012-03-30 21:26 334 MyApp2-log4j.properties
      2012-03-30 21:32 916 MyApp2.class
      2012-03-30 21:25 775 MyApp2.java
      Java MyApp2 MyApp2-log4j.properties
      0 [main] INFO MyApp2 - Eingabe der Anwendung
      2 [main] DEBUG Bar - Hat es wieder getan   3 [main] INFO MyApp2 - Beenden der Anwendung

CONTEXT: Bereite ein Programm vor, das eine * jar Datei [1] (Problemquelle) verwendet:

// 1. Gehen Sie zu Ihrem Quellverzeichnis (z. B. c: \ Benutzer \ Hopbit \ log4j)

// 2. Erstellen Sie unter Bar-Klasse und speichern Sie als Bar.java

%Vor%

// 3. Erstellen Sie unter MyApp2 Klasse und speichern Sie als MyApp2.java

%Vor%

// 4. Erstellen & amp; Speichern Sie die Datei MyApp2-log4j.properties, die den folgenden Code enthält:

%Vor%

// 5. Versuchen Sie, oben Beispiel zu kompilieren, sollte es etwas wie folgt zurückgeben:

%Vor%

LINKS & amp; Hinweise

[1] Ссылка ("Kurze Einführung in log4j: Ceki GŁlcŁ, März 2002") < br> [2] Ссылка [3] Die obige Lösung wurde in der Datei INSTALL erstellt, die im Paket log4j abgelegt ist.

    
Łukasz Siwiński 15.04.2012 20:16
quelle

Tags und Links