Obecnie pracuję nad polską aplikacją J2ME, tylko ją ulepszam. Mam trudności z uzyskaniem dokładnej wersji pliku jar. Czy istnieje sposób, aby znaleźć wersję pliku jar do importu wykonanego w klasie? To znaczy, jeśli masz coś, zaimportuj xyz; czy możemy wiedzieć, do której wersji należy pakiet jar xy?
jar
version
executable-jar
Ritesh Mengji
źródło
źródło
sqljdbc42.jar
plikach, których używałem z Cognos, jednak Cognos jest w stanie zgłosić wersję (4.2.6420.100). Skąd bierze tę wersję, jeśli nie jest zapisana w manifeście?Musisz go rozpakować i sprawdzić jego
META-INF/MANIFEST.MF
plik, nplub bardziej szczegółowe:
źródło
Aby rozwinąć powyższe odpowiedzi, w pliku META-INF / MANIFEST.MF w JAR, prawdopodobnie zobaczysz wiersz:
Manifest-Version: 1.0
← To NIE jest numer wersji jar!Musisz sprawdzić,
Implementation-Version
który, jeśli jest obecny, jest ciągiem tekstowym, tak całkowicie zależnym od autora JAR, co do tego, co tam znajdziesz. Zobacz także dokumentację Oracle i specyfikację wersji pakietuźródło
Wystarczy uzupełnić powyższą odpowiedź.
Plik manifestu znajduje się w pliku jar w
META-INF\MANIFEST.MF
ścieżce.Możesz sprawdzić zawartość słoika w dowolnym archiwizatorze obsługującym zip.
źródło
Każda wersja słoika ma unikalną sumę kontrolną. Możesz obliczyć sumę kontrolną swojego słoika (który nie miał informacji o wersji) i porównać ją z różnymi wersjami słoika. Możemy również przeszukać słoik za pomocą sumy kontrolnej.
Zapoznaj się z tym pytaniem, aby obliczyć sumę kontrolną: Jaki jest najlepszy sposób obliczenia sumy kontrolnej dla pliku znajdującego się na moim komputerze?
źródło
Zasadniczo powinieneś użyć
java.lang.Package
klasy, która używa modułu ładującego klasy do przekazywania informacji o twoich klasach.przykład:
Wydaje mi się, że logback wykorzystuje tę funkcję do śledzenia nazwy / wersji JAR każdej klasy w utworzonych przez nią stacktraces.
zobacz także http://docs.oracle.com/javase/8/docs/technotes/guides/versioning/spec/versioning2.html#wp90779
źródło
Ten prosty program wyświetli listę wszystkich przypadków dla wersji jar mianowicie
Nie znaleziono pliku manifestu
Używa javaxt-core jar, który można pobrać ze strony http://www.javaxt.com/downloads/
źródło
Jestem spóźniony, ale możesz wypróbować dwie następujące metody
używając tych potrzebnych klas
Te metody pozwalają mi uzyskać dostęp do atrybutów jar. Lubię być kompatybilny wstecz i używać najnowszych. Więc użyłem tego
Działa to dobrze, gdy używasz maven i potrzebujesz szczegółów pom dla znanych klas. Mam nadzieję że to pomoże.
źródło
W systemie Linux spróbuj wykonać następujące czynności:
odnaleźć . -name "YOUR_JAR_FILE.jar" -exec zipgrep "Implementation-Version:" '{}' \; | awk -F ':' '{print $ 2}'
źródło
Jeśli masz winrar, otwórz jar za pomocą winrar, kliknij dwukrotnie, aby otworzyć folder
META-INF
. RozpakujMANIFEST.MF
iCHANGES
pliki do dowolnej lokalizacji (powiedzmy na pulpit).Otwórz rozpakowane pliki w edytorze tekstu: zobaczysz wersję implementacji lub wersję wydania.
źródło
Możesz filtrować wersję z pliku MANIFEST za pomocą
unzip -p my.jar META-INF/MANIFEST.MF | grep 'Bundle-Version'
źródło
Bundle-Version
.Pomyślałem, że dam bardziej aktualną odpowiedź, ponieważ to pytanie wciąż pojawia się dość często w wyszukiwaniach.
Sprawdzanie wersji CLi JAR:
Uruchom następujące polecenie w pliku jar CLi:
Przykładowe dane wyjściowe:
Wersja CLi jest wymieniona powyżej.
Aby uzyskać wersję serwera, uruchom następujące polecenie:
(powyższe będzie się różnić w zależności od implementacji uwierzytelniania, proszę odpowiednio zmienić)
Przykładowe dane wyjściowe:
źródło
Można to sprawdzić poleceniem
java -jar jarname
źródło
main()
metody JAR