Myślę, że @Yaiai ma do tego prawo (oddam mu głos w górę, aby uzyskać przewalcowanie piłki). Wpadam na to cały czas. Wydaje mi się, że była to okropna decyzja dla języka Java. Postanowili, że będzie w porządku, aby ustawienia ścieżek klasu znalazły się w plikach MANIFEST w plikach jar. Zasadniczo, słoiki mogą zawierać pliki wewnątrz nich, które wskazują inne klasy i słoiki zlokalizowane gdzie indziej, a kiedy te inne rzeczy, o których mowa, nie istnieją, widzisz ostrzeżenia takie jak te, które dostajesz. Ostrzeżenia te pochodzą z plików Jar znajdujących się w ścieżce klas kompilacji. Tak więc, jeśli naprawdę zależy Ci na śledzeniu problemów z plikami jar, wyodrębnij zawartość plików jar, usuń ustawienia "Class-Path" w ich plikach manifestu i odtwórz je. Coś w tym stylu (najpierw przenieś słoik do katalogu tymczasowego):
#Extract the jar file
jar xvf myfile.jar
rm myfile.jar
emacs ./META-INF/MANIFEST.MF
*Find the entry "Class-path:" and remove it completely and save the changes
#Rebuild the jar file
jar cvf myfile.jar ./*
To powinno wystarczyć!
Nie sądzę, że chcesz po prostu zignorować te wiadomości, ponieważ jeśli chcesz mieć pełną kontrolę nad tym, co dzieje się na ścieżce klas, powinieneś wyszukać te pliki manifestu i upewnić się, że nie robią bałaganu o którym nie wiesz.
Prawdopodobnie będziesz musiał przejrzeć całą masę plików jar, więc zwykle używam pętli powłoki, aby pomóc mi je przejrzeć. Można skopiować wszystkie słoików pytanie do katalogu tymczasowego i uruchomić pętlę tak (składni bash):
for i in *.jar; do echo $i; jar xf $i; grep -i 'class-path' ./META-INF/MANIFEST.MF; done
To wypisze nazwę każdego pliku JAR w bieżącym katalogu, wyodrębnić jego zawartość, a grep jego plik manifestu dla wpisów klasy classpath. Jeśli nazwa pliku jar na wyjściu ma wydruk "Class-Path", oznacza to, że Jar ma ustawienia classpath w swoim manifeście. W ten sposób możesz mieć nadzieję, na jakie słoiki potrzebujesz podjąć działania.
Dzięki za opracowanie! – Yishai
Dobry pomysł, ale zanieczyszczasz bieżący katalog zawartością JARów. –
@ LawrenceDol Dlatego właśnie jest napisane: "Możesz skopiować wszystkie swoje słoiki do katalogu tymczasowego ..." –