So fügen Sie JAR-Dateien in die Java-Datei ein und kompilieren sie in der Eingabeaufforderung


121

Ich habe 3 JAR-Dateien und eine Java-Datei, die von diesen JAR-Dateien abhängt. Wie kompiliere ich die Java-Datei mit diesen JAR-Dateien über eine Eingabeaufforderung?


9
Typ "javac -help"
Sean Patrick Floyd


2
hoffe, das hilft dir ..
Fahim Parkar

2
Hinweis für sich selbst: Sie müssen das Flag -cp / -classpath vor dem Namen der Java-Datei verwenden, die Sie ausführen möchten. Andernfalls wird das Flag ignoriert. java -cp ".;magic.jar" Fooist ok java Foo -cp ".;magic.jar"ist nicht.
Dmitry

Antworten:


108

Sie können Ihre JAR-Dateien mit der Option "-cp" in den Befehl "javac" aufnehmen.

javac -cp ".:/home/path/mail.jar:/home/path/servlet.jar;" MyJavaFile.java

Anstelle von "-cp" können Sie auch "-classpath" verwenden.

javac -classpath ".:/home/path/mail.jar:/home/path/servlet.jar:" MyJavaFile.java

Sie können die Jars bei jeder Kompilierung einschließen, indem Sie die Umgebungsvariable "CLASSPATH" richtig einstellen. Die Umgebungsvariable speichert den Pfad, in dem sich die Jars und Klassen befinden, die zum Kompilieren / Ausführen einer Java-Datei verwendet werden müssen. Sie müssen die Gläser nicht jedes Mal einzeln einschließen, wenn Sie Ihre Datei kompilieren.

Verschiedene Maschinen haben unterschiedliche Methoden, um den Klassenpfad als Umgebungsvariable festzulegen. Die Befehle für Windows, Linux usw. sind unterschiedlich.

Weitere Details finden Sie in diesem Blog .

http://javarevisited.blogspot.com/2011/01/how-classpath-work-in-java.html

7
javac -classpath ".:/home/path/mail.jar;/home/path/servlet.jar" MyJavaFile.javaarbeitete für mich. Ich habe einen Mac benutzt. Ich habe irgendwo gelesen, dass ':' für Unix verwendet wird.
Sri

2
Ich habe diesen Befehl verwendet, aber beim Versuch, auf die in der JAR-Datei vorhandene Klasse zuzugreifen, wird ClassNotFoundException angezeigt.
Mohammed Rampurawala

3
was macht .:das Entschuldigung, wenn es eine dumme Frage ist, aber es ist mir nicht klar.
Miranda

1
@kensen. Schreibfehler. Ersetzen Sie: (Doppelpunkt) durch Semikolon (;)
Pankaj Shinde

Oben hat bei Ubuntu nicht funktioniert. Ich habe es ohne Anführungszeichen versucht und es hat funktioniert. Ex. javac -cp .:/home/path/mail.jar:/home/path/servlet.jar; MyJavaFile.java
Alfaz Jikani

24

Bitte versuchen Sie es unter Linux

javac -cp jarfile source file 

BEISPIEL: -

javac  -cp .:/jars/* com/template/*.java

Wenn ich das BEISPIEL versuche : - , .:/jarsersetzt durch das Verzeichnis, in dem sich meine JAR-Dateien befinden, erhalte ich die Fehlermeldung javac: invalid flag: /location/of/first/jar/file.jar.
Arturo Don Juan

stackoverflow.com/questions/27915204/… Bitte beachten Sie dies, es kann Ihr Problem lösen
Jamsheer

20

Die Syntax funktioniert unter Windows dos:

javac -cp ".;first.jar;second.jar;third.jar" MyJavaFile.java

4
Nach erfolgreicher Ausführung des obigen Befehls, wie wird die Java-Klassendatei ausgeführt?
Yash Agrawal

java -cp first.jar: second.jar: drittes.jar MyFile
Krsna Chaitanya

15

Versuchen Sie, alle Abhängigkeits-JAR-Dateien über Umgebungsvariableneinstellungen zu Ihrem Klassenpfad hinzuzufügen, oder führen Sie die folgenden Schritte aus:

  1. Öffnen Sie die Eingabeaufforderung.
  2. Wechseln Sie in das Verzeichnis Ihrer Java-Datei, die Sie kompilieren möchten.
  3. Legen Sie den Klassenpfad für Ihre Abhängigkeits-JAR-Dateien wie folgt fest:

    set classpath=C:\Users\sarath_sivan\Desktop\jars\servlet-api.jar; C:\Users\sarath_sivan\Desktop\jars\spring-jdbc-3.0.2.RELEASE; C:\Users\sarath_sivan\Desktop\jars\spring-aop-3.0.2.RELEASE;

  4. Jetzt können Sie Ihre Java-Datei kompilieren. (Befehl: javac YourJavaFile.java)

Hoffe, dies wird Ihr Abhängigkeitsproblem lösen.


15

Das Folgende sind Schritte,

  1. Kopieren Sie alle Jars und Ihre .java-Datei in denselben Ordner (es ist einfach, Dateinamen zu erwähnen, anstatt einen langen Pfad zu erwähnen. Sie können jar und .java jedoch in separaten Ordnern aufbewahren).

  2. Kompilieren,

    javac -cp .:<file_1_name>.jar:<file_2_name>.jar <prog_name>.java
  3. Ausführen,

    java -cp .:<file_1_name>.jar:<file_2_name>.jar <prog_name>

Ich hoffe das hilft!


1
Vielen Dank, dass Sie auch gezeigt haben, wie man es ausführt. Was macht der Doppelpunkt wieder? Es ist das aktuelle Verzeichnis und Dateitrennzeichen?
ThisClark

Ja, es ist das aktuelle Verzeichnis und ein Unix-Dateitrennzeichen (unter Windows ist es ein Semikolon).
MathuSum Mut

6

Dadurch wird eine .class-Datei erstellt:

javac -classpath "[jarname with specified path]" [java filename]

Dadurch wird die Klassendatei ausgeführt:

java -cp [jarname with specified path]: [java filename]

1
Java-Befehl zeigt Fehler an Verursacht durch: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory Ich möchte ** kompilieren ** javac -classpath "/home/scorncer/Downloads/spark-core-2.3.jar" MyFile.javaund ** ausführen java -cp /home/scorncer/Downloads/spark-core-2.3.jar: MyFile.java also i tried java -cp /home/scorncer/Downloads/spark-core-2.3.jar: MyFile
Yash Agrawal

5

Versuche dies.

javac -cp .:jars/jar1:jars/jar2:jars/jar3 com/source/*.java

2

Sie müssen die Abhängigkeiten sowohl in der Kompilierungszeit als auch in der Laufzeit angeben

Verwenden Sie zum Kompilieren dieses Format

javac -cp "*.jar;classfile_path" filename.java

Beispiel:

javac -cp "ojdbc6.jar;c:\programs" Main.java

Diese Antwort ist zwar richtig, scheint aber nichts hinzuzufügen, was die anderen Antworten noch nicht sagen. Wenn es einen wesentlichen Unterschied zwischen dieser und den anderen Antworten gibt, ist es besser zu erklären, warum Ihre Antwort unterschiedlich ist.
DaveyDaveDave

Sie haben die Angabe von Abhängigkeiten zur Laufzeit sowie zur Kompilierungszeit erwähnt, aber nicht erklärt, wie diese zur Laufzeit angegeben werden.
Michael Fulton

1

Manchmal funktioniert es, wenn folgende Änderungen vorgenommen werden:

java -cp ".;%CLASSPATH%" classfilename 

Hinweis: Unter Windows. Für Linux $CLASSPATHstattdessen verwenden.


1
javac -cp jars/jar1:jars/jar2:jars/jar3 abc.java

5
Während dieser Code die Frage lösen kann, einschließlich einer Erklärung, wie und warum dies das Problem löst, würde dies wirklich dazu beitragen, die Qualität Ihres Beitrags zu verbessern, und wahrscheinlich zu mehr Up-Votes führen. Denken Sie daran, dass Sie in Zukunft die Frage für die Leser beantworten, nicht nur für die Person, die jetzt fragt. Bitte bearbeiten Sie Ihre Antwort, um Erklärungen hinzuzufügen und anzugeben, welche Einschränkungen und Annahmen gelten.
Doppelter Piepton

0

Wenn Sie Ubuntu verwenden:

/opt/JavaServices/sqlite $ export CLASSPATH=/opt/JarFiles/XXXX.jar:/opt/JarFiles/XXXX.jar:/opt/JavaServices/;javac SQLiteSample.java

Gehe zum Ordner (außerhalb der Paketstruktur)

/opt/JavaServices $ export CLASSPATH=/opt/JarFiles/XXXXX.jar:/opt/JarFiles/XXXXX.jar:/opt/JavaServices/;java sqlite.SQLiteSample

Hinweis: Bitte beachten Sie die Dateispeicherorte und Paketnamen


-1

Für Windows

  1. Stellen Sie an der Eingabeaufforderung eine Verbindung zu dem Verzeichnis her, in dem sich die Java-Dateien befinden.
  2. setze den Klassenpfad (hier d = Ordnername) setze Klassenpfad = C: \ d1 \ d2 \ d3 \ d4 \ d5 \ d6 \ d7.jar;
  3. Drücken Sie die Eingabetaste und
  4. Kompilieren Sie jetzt die Java-Datei javac filename.java
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.