Jak dodawać pliki JAR podczas kompilacji?
Mam następujące w pliku java (MyRtmpClient.java): {]}
import org.apache.mina.common.ByteBuffer;
I ByteBuffer
znajduje się wewnątrz pliku JAR (oczywiście z odpowiednią strukturą katalogów).
Ten plik jar i inne, których potrzebuję, znajdują się w tym samym katalogu co .plik java.
Następnie kompiluję z linii:
javac -cp ".;*.jar" MyRtmpClient.java
Ale dostaję błąd:
MyRtmpClient.java:3: package org.apache.mina.common does not exist
import org.apache.mina.common.ByteBuffer;
Jak mogę włączyć pliki jar do mojego projektu?
9 answers
Twój wiersz poleceń jest poprawny, ale są pewne względy:
- musisz mieć javac > = 1.6, ponieważ tylko w tej wersji kompilator przetwarza " * " jako różne pliki JAR.
- musisz mieć System Windows, ponieważ "; "jest separatorem ścieżek tylko dla tego systemu operacyjnego (nie działa na Uniksie, separatorem ścieżek na Uniksie jest":").
Zakładam, że plik JAR ma odpowiednią strukturę katalogów, jak podałeś.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-14 19:04:51
Javac nie rozumie *.jar w argumencie classpath. Musisz wyraźnie określić każdy jar. np.
javac -cp ".;mina.jar" MyRtmpClient.java
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-30 15:56:28
W javac JDK 6 i wyżej można użyć (Uwaga brak .jar):
javac -cp ".;*" MyRtmpClient.java
Cytuję javac-kompilator języka programowania Java
Dla specjalnej wygody, element ścieżki klasy zawierający nazwę podstawową * jest uważany za równoważny określaniu listy wszystkich plików w katalogu z rozszerzeniem .słoik lub .Słoik.
Na przykład, jeśli katalog foo zawiera a.jar oraz b.JAR, następnie element ścieżki klasy foo/* jest rozszerzony do A.jar;b.JAR, z tym że kolejność plików jar jest nieokreślona. Wszystkie pliki jar w podanym katalogu, nawet ukryte, są zawarte na liście. Wpis classpath składający się po prostu z * rozszerza się do listy wszystkich plików jar w bieżącym katalogu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55
Jeśli masz do dyspozycji narzędzia find
i tr
(np. pracujesz pod Linuksem), możesz to zrobić:
javac -cp .:`find * -name "*.jar" | tr "\n" ":"` MyRtmpClient.java
Wszystkie pliki jar w bieżącym katalogu i wszystkie jego podkatalogi zostaną dodane (polecenie powłoki wyświetla wszystkie pliki jar i umieszcza dwukropki jako separatory między nimi).
Wyjaśnienie:
- para backtików ( ` ) oznacza polecenia powłoki do wykonania,
-
find * -name "*.jar"
wyszukuje i wyświetla wszystkie jar w hierarchii whose root is current folder, - pionowy pasek ( | ) is pipe; łączy wyjście
find
z wejściem następnego polecenia, -
tr "\n" ":"
zastępuje wszystkie znaki newline znakami dwukropek.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-29 19:42:25
W Twoim przypadku myślę, że JAVAC nie może znaleźć pliku jars.
Proszę spróbować:
PROJECT_PATH
- lib\a.jar
- src\package\b.java
cd @PROJECT_PATH
javac -classpath lib\a.jar src\package\b.java
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-11 23:16:31
Prawdopodobnie poniżej składnia będzie działać na komendzie dos Windows
javac -cp ".;first.jar;second.jar;third.jar" MyRtmpClient.java
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-13 18:21:24
W Javie 8 opcja ".; * "itd. które są wymienione powyżej nie wydają się działać. Próbowałem i znalazłem, że :
javac -cp '<location of jars>/*' MyRtmpClient.java
Działa:
<location of jar>
może być / usr / local/ classes / * lub / home / developer/MyProject / *
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-08 16:09:35
Spróbuj włączyć plik jar w linii poleceń tak:
Javac MyRtmpClient.Java ByteBuffer.jar
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-30 15:54:11
Nie można używać -cp
z Javac . Musisz zamiast tego użyć -classpath
(zakładając, że pozostałe ustawienia są poprawne).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-26 07:42:57