Jak dołączyć pliki jar do pliku java i skompilować je w wierszu poleceń


121

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?


9
wpisz „javac -help”
Sean Patrick Floyd


2
mam nadzieję, że to ci pomoże ...
Fahim Parkar

2
Uwaga dla siebie: musisz użyć flagi -cp / -classpath przed nazwą pliku java, który chcesz uruchomić, w przeciwnym razie flaga zignoruje. java -cp ".;magic.jar" Foojest ok java Foo -cp ".;magic.jar"nie jest.
Dmitry

Odpowiedzi:


108

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

7
javac -classpath ".:/home/path/mail.jar;/home/path/servlet.jar" MyJavaFile.javapracował dla mnie. Używałem mac. Czytałem gdzieś, że ':' jest używane dla unixa.
Sri

2
Użyłem tego polecenia, ale kiedy próbowałem uzyskać dostęp do klasy obecnej w pliku jar, otrzymuję ClassNotFoundException.
Mohammed Rampurawala

3
Co ma .:zrobić? przepraszam, jeśli to głupie pytanie, ale nie jest to dla mnie oczywiste.
Miranda

1
@kensen. Błąd literowy. zastąp: (dwukropek) średnikiem (;)
Pankaj Shinde

Powyższe nie działało dla mnie na ubuntu. Próbowałem bez cudzysłowu i zadziałało. Dawny. javac -cp .:/home/path/mail.jar:/home/path/servlet.jar; MyJavaFile.java
Alfaz Jikani,

24

Spróbuj w systemie Linux

javac -cp jarfile source file 

PRZYKŁAD: -

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

Kiedy próbuję PRZYKŁAD: - , z .:/jarszastą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.
Arturo don Juan,

stackoverflow.com/questions/27915204/ ... proszę odnieść się do tego, to może rozwiązać twój problem
Jamsheer

20

Składnia będzie działać na komendzie dos w systemie Windows:

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

4
Po pomyślnym wykonaniu powyższego polecenia, jak uruchomić plik klasy java?
Yash Agrawal

java -cp first.jar: second.jar: third.jar Mój plik
Kryszna

15

Spróbuj dodać wszystkie pliki jar zależności do ścieżki klasy za pomocą ustawień zmiennych środowiskowych lub wykonaj poniższe czynności:

  1. Otwórz wiersz polecenia.
  2. Zmień katalog na lokalizację pliku Java, który chcesz skompilować.
  3. 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;

  4. Teraz możesz skompilować plik java. (Polecenie: javac YourJavaFile.java)

Mam nadzieję, że to rozwiąże problem z zależnościami.


15

Poniżej znajdują się kroki,

  1. 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).

  2. Kompilować,

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

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

Mam nadzieję, że to pomoże!


1
Dziękuję również za pokazanie, jak wykonać. Co znowu robi dwukropek? To bieżący katalog i separator plików?
ThisClark,

Tak, to bieżący katalog i uniksowy separator plików (w systemie Windows jest to średnik).
MathuSum Mut

6

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]

1
Polecenie java wyświetla błąd Spowodowany przez: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory Chcę skompilować ** javac -classpath "/home/scorncer/Downloads/spark-core-2.3.jar" MyFile.javai ** 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
Yash Agrawal

5

Spróbuj tego.

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

2

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

Ta odpowiedź, chociaż jest poprawna, tak naprawdę nie wydaje się dodawać niczego, czego inne odpowiedzi już nie mówią. Jeśli istnieje jakaś kluczowa różnica między tą a innymi odpowiedziami, lepiej byłoby wyjaśnić, dlaczego Twoja odpowiedź jest inna.
DaveyDaveDave

Wspomniałeś o określaniu zależności w czasie wykonywania, a także podczas kompilacji, ale nie wyjaśniłeś, jak je określić w czasie wykonywania.
Michael Fulton,

1

czasami działa następująca zmiana:

java -cp ".;%CLASSPATH%" classfilename 

Uwaga: W systemie Windows. $CLASSPATHZamiast tego do korzystania z systemu Linux .


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

5
Chociaż ten kod może rozwiązać problem, w tym wyjaśnienie, jak i dlaczego to rozwiązuje problem, naprawdę pomogłoby poprawić jakość twojego posta i prawdopodobnie zaowocowałoby większą liczbą pozytywnych głosów. Pamiętaj, że odpowiadasz na pytanie do czytelników w przyszłości, a nie tylko osoba, która zapyta teraz. Proszę edytować swoje odpowiedzi, aby dodać wyjaśnień i dać wskazówkę co zastosować ograniczenia i założenia.
podwójny sygnał

0

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


-1

Dla Windowsa

  1. połącz się z katalogiem, w którym znajdują się pliki java w wierszu polecenia.
  2. ustaw ścieżkę klasy (tutaj d = nazwa folderu) set classpath = C: \ d1 \ d2 \ d3 \ d4 \ d5 \ d6 \ d7.jar;
  3. naciśnij enter i
  4. teraz skompiluj plik java javac nazwa_pliku.java
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.