Mam 3 pliki jar i plik .java, który zależy od tych plików jar. Jak skompilować plik .java z tymi plikami jar przy użyciu wiersza polecenia?
java -cp ".;magic.jar" Foo
jest ok java Foo -cp ".;magic.jar"
nie jest.
Mam 3 pliki jar i plik .java, który zależy od tych plików jar. Jak skompilować plik .java z tymi plikami jar przy użyciu wiersza polecenia?
java -cp ".;magic.jar" Foo
jest ok java Foo -cp ".;magic.jar"
nie jest.
Odpowiedzi:
Pliki jar można dołączyć do polecenia „javac” za pomocą opcji „-cp”.
javac -cp ".:/home/path/mail.jar:/home/path/servlet.jar;" MyJavaFile.java
Zamiast „-cp” możesz też użyć „-classpath”
javac -classpath ".:/home/path/mail.jar:/home/path/servlet.jar:" MyJavaFile.java
Możesz dołączyć pliki jar za każdym razem, gdy kompilujesz, ustawiając poprawnie zmienną środowiskową „CLASSPATH”. Zmienna środowiskowa będzie przechowywać ścieżkę do plików JAR i klas, które mają być używane do kompilowania / wykonywania dowolnego pliku java. Nie będziesz musiał dołączać poszczególnych słoików za każdym razem, gdy kompilujesz plik.
Różne komputery mają różne metody ustawiania ścieżki klas jako zmiennej środowiskowej. Polecenia dla systemu Windows, Linux itp. Są różne.
Więcej szczegółów znajdziesz na tym blogu .
http://javarevisited.blogspot.com/2011/01/how-classpath-work-in-java.html
javac -classpath ".:/home/path/mail.jar;/home/path/servlet.jar" MyJavaFile.java
pracował dla mnie. Używałem mac. Czytałem gdzieś, że ':' jest używane dla unixa.
.:
zrobić? przepraszam, jeśli to głupie pytanie, ale nie jest to dla mnie oczywiste.
javac -cp .:/home/path/mail.jar:/home/path/servlet.jar; MyJavaFile.java
Spróbuj w systemie Linux
javac -cp jarfile source file
PRZYKŁAD: -
javac -cp .:/jars/* com/template/*.java
.:/jars
zastąpieniem katalogiem, w którym znajdują się moje pliki JAR, pojawia się komunikat o błędzie javac: invalid flag: /location/of/first/jar/file.jar
.
Składnia będzie działać na komendzie dos w systemie Windows:
javac -cp ".;first.jar;second.jar;third.jar" MyJavaFile.java
Spróbuj dodać wszystkie pliki jar zależności do ścieżki klasy za pomocą ustawień zmiennych środowiskowych lub wykonaj poniższe czynności:
Ustaw ścieżkę klas dla plików jar zależności, jak pokazano poniżej:
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;
Teraz możesz skompilować plik java. (Polecenie: javac YourJavaFile.java
)
Mam nadzieję, że to rozwiąże problem z zależnościami.
Poniżej znajdują się kroki,
Skopiuj wszystkie pliki jar i plik .java do tego samego folderu (łatwo będzie wymienić nazwy plików zamiast wymieniać długą ścieżkę. Możesz jednak przechowywać pliki jar i .java w osobnych folderach).
Kompilować,
javac -cp .:<file_1_name>.jar:<file_2_name>.jar <prog_name>.java
Wykonać,
java -cp .:<file_1_name>.jar:<file_2_name>.jar <prog_name>
Mam nadzieję, że to pomoże!
Spowoduje to utworzenie pliku .class:
javac -classpath "[jarname with specified path]" [java filename]
Spowoduje to wykonanie pliku klasy:
java -cp [jarname with specified path]: [java filename]
javac -classpath "/home/scorncer/Downloads/spark-core-2.3.jar" MyFile.java
i ** uruchomić 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
Musisz określić zależności w czasie kompilacji, a także w czasie wykonywania
Aby skompilować, użyj tego formatu
javac -cp "*.jar;classfile_path" filename.java
Przykład:
javac -cp "ojdbc6.jar;c:\programs" Main.java
javac -cp jars/jar1:jars/jar2:jars/jar3 abc.java
Jeśli używasz Ubuntu:
/opt/JavaServices/sqlite $ export CLASSPATH=/opt/JarFiles/XXXX.jar:/opt/JarFiles/XXXX.jar:/opt/JavaServices/;javac SQLiteSample.java
Przejdź do lokalizacji folderu (poza strukturą pakietu)
/opt/JavaServices $ export CLASSPATH=/opt/JarFiles/XXXXX.jar:/opt/JarFiles/XXXXX.jar:/opt/JavaServices/;java sqlite.SQLiteSample
Uwaga: zobacz lokalizacje plików i nazwy pakietów