Come includere file jar con file java e compilare nel prompt dei comandi


121

Ho 3 file jar e un file .java che dipende da questi file jar. Come si compila il file .java con questi file jar utilizzando un prompt dei comandi?


9
scrivi "javac -help"
Sean Patrick Floyd,


2
spero che questo ti aiuti ..
Fahim Parkar

2
Nota per se stessi: è necessario utilizzare il flag -cp / -classpath prima del nome del file java che si desidera eseguire, altrimenti ignorerà il flag. java -cp ".;magic.jar" Fooè ok java Foo -cp ".;magic.jar"non è.
Dmitry

Risposte:


108

Puoi includere i tuoi file jar nel comando "javac" usando l'opzione "-cp".

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

Invece di "-cp" potresti anche usare "-classpath"

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

È possibile includere i vasi ogni volta che si compila impostando correttamente la variabile d'ambiente "CLASSPATH". La variabile di ambiente memorizzerà il percorso in cui i jar e le classi che devono essere utilizzati per compilare / eseguire qualsiasi file java. Non dovrai includere i vasi singolarmente ogni volta che compili il file.

Macchine differenti hanno metodi differenti per impostare il classpath come variabile d'ambiente. I comandi per Windows, Linux, ecc. Sono diversi.

Puoi trovare maggiori dettagli in questo 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.javaha funzionato per me. Stavo usando mac. Ho letto da qualche parte che ":" è usato per unix.
Sri

2
Ho usato questo comando ma quando ho provato ad accedere alla classe presente nel file jar, ricevo ClassNotFoundException.
Mohammed Rampurawala

3
cosa fa .:? scusate se è una domanda stupida, ma per me non è scontata.
Miranda

1
@kensen. Errore di battitura. sostituire: (due punti) con punto e virgola (;)
Pankaj Shinde

Sopra non ha funzionato per me su Ubuntu. Ho provato senza virgolette e ha funzionato. Ex. javac -cp .:/home/path/mail.jar:/home/path/servlet.jar; MyJavaFile.java
Alfaz Jikani

24

Prova su Linux

javac -cp jarfile source file 

ESEMPIO :-

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

Quando provo l' ESEMPIO: - , .:/jarssostituito con la directory in cui si trovano i miei file JAR, ottengo il messaggio di errore javac: invalid flag: /location/of/first/jar/file.jar.
Arturo don Juan

stackoverflow.com/questions/27915204/... Riferirsi questo, si può risolvere il problema
Jamsheer

20

La sintassi funzionerà con il comando DOS di Windows:

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

4
Dopo aver eseguito con successo il comando precedente come eseguire il file di classe java?
Yash Agrawal

java -cp first.jar: second.jar: third.jar MyFile
Krsna Chaitanya,

15

Prova ad aggiungere tutti i file jar delle dipendenze al tuo percorso di classe tramite le impostazioni delle variabili di ambiente o utilizza i passaggi seguenti:

  1. Apri il prompt dei comandi.
  2. Cambia directory nella posizione del tuo file java che desideri compilare.
  3. Imposta il percorso di classe per i file jar delle dipendenze come mostrato di seguito:

    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. Ora puoi compilare il tuo file java. (comando javac YourJavaFile.java:)

Spero che questo risolva il tuo problema di dipendenza.


15

I seguenti sono passaggi,

  1. Copia tutti i jar e il tuo file .java in una stessa cartella (sarà facile menzionare i nomi dei file invece di menzionare il percorso lungo. Anche se puoi tenere jar e .java in cartelle separate).

  2. Compilare,

    javac -cp .:<file_1_name>.jar:<file_2_name>.jar <prog_name>.java
  3. Eseguire,

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

Spero che aiuti!


1
Grazie anche per aver mostrato come eseguire. Cosa fa di nuovo il punto due punti? È la directory corrente e il separatore di file?
ThisClark

Sì, è la directory corrente e un separatore di file Unix (su Windows è un punto e virgola).
MathuSum Mut

6

Questo creerà il file .class:

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

Questo eseguirà il file di classe:

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

1
Il comando java mostra un errore Causato da: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory Voglio compilare ** javac -classpath "/home/scorncer/Downloads/spark-core-2.3.jar" MyFile.javaed ** eseguire 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

Prova questo.

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

2

È necessario specificare le dipendenze in fase di compilazione e in fase di esecuzione

Per compilare usa questo formato

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

Esempio:

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

Questa risposta, sebbene corretta, in realtà non sembra aggiungere nulla che le altre risposte non dicano già. Se c'è qualche differenza fondamentale tra questa e le altre risposte, sarebbe meglio spiegare perché la tua risposta è diversa.
DaveyDaveDave

Hai menzionato la specifica delle dipendenze in fase di esecuzione e in fase di compilazione, ma non hai spiegato come specificarle in fase di esecuzione.
Michael Fulton

1

alcune volte facendo le seguenti modifiche funziona:

java -cp ".;%CLASSPATH%" classfilename 

Nota: su Windows. Per Linux $CLASSPATHinvece utilizzare .


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

5
Sebbene questo codice possa risolvere la domanda, inclusa una spiegazione di come e perché questo risolve il problema aiuterebbe davvero a migliorare la qualità del tuo post e probabilmente si tradurrebbe in più voti positivi. Ricorda che stai rispondendo alla domanda per i lettori in futuro, non solo alla persona che chiede ora. Si prega di modificare la risposta per aggiungere spiegazioni e dare un'indicazione di ciò si applicano le limitazioni e le assunzioni.
doppio segnale acustico

0

Se stai usando Ubuntu:

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

Vai alla posizione della cartella (fuori dalla struttura del pacchetto)

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

Nota: vedere i percorsi dei file e i nomi dei pacchetti


-1

Per Windows

  1. connettersi alla directory in cui sono presenti i file java sul prompt dei comandi.
  2. imposta il classpath (qui d = nome cartella) set classpath = C: \ d1 \ d2 \ d3 \ d4 \ d5 \ d6 \ d7.jar;
  3. premere invio e
  4. ora compila il file java javac filename.java
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.