Jaki byłby najłatwiejszy sposób przeglądania klas, metod, właściwości itp. W pliku jar? Szukam czegoś równoważnego bardzo przydatnemu Lutzowi Roederowi .NET Reflector - dla Java
@HughLee Facet, który o to pytał, zapytał 8 lat temu . Dlatego musi nastąpić automatyczna akceptacja po uzyskaniu odpowiedzi 100 pozytywnych głosów IMO
Kanion Kolob
@KolobCanyon prawda, ale najwyżej oceniona odpowiedź została przesłana tego samego dnia, w którym została
@ salvob Nie potrzebujesz myślnika, ponieważ wymaga taron obowiązkowych opcji.
Tom Hawtin - tackline
2
Do Twojej wiadomości może być konieczne dodanie C:\Program Files\Java\jdk<version>\bindo zmiennej środowiskowej PATH systemu lub użytkownika, zanim będzie można użyć jej jarjako polecenia systemowego. (Gdzie <wersja> jest numerem kompilacji wersji jdk. Sprawdź C:\Program Files\Java)
Tezra
1
przykład javap: javap -classpath test.jar com.yourpackage.HelloWorld
mPrinC
aby zobaczyć zawartość plików nieklasowych (takich jak manifest), chciałbyś zrobić coś takiego: tar -xOzf test.jarjar tf test.jar | grep MANIFEST
mPrinC
55
Zazwyczaj otwieram je za pomocą 7-Zip ... Pozwala przynajmniej zobaczyć pakiety, klasy i zasoby.
Gdybym musiał zobaczyć metody lub pola, użyłbym Jad, ale oczywiście lepiej jest polegać na (dobrym) JavaDoc ...
Teraz gdzieś na SO wspomniano o niektórych wtyczkach Eclipse, aby znaleźć w pliku jar, w której znajduje się klasa, być może mogą zrobić więcej (tj. To, o co prosiłeś).
To, czego używam osobiście, to JD-GUI. Jest to darmowy „dekompilator”, ponieważ pozwala zobaczyć kod źródłowy, klasy i obiekty w klasach, a także strukturę plików w menu drzewa po lewej stronie. Nie pozwala to jednak bezpośrednio modyfikować klas.
Działa to na różnych platformach, podczas gdy 7-Zip wspomniany w innej odpowiedzi jest specyficzny dla systemu Windows.
Brad Cupit,
Użyłem Archive Utility na OS X, działało dobrze. Większość narzędzi (nie) zip powinna działać, niezależnie od platformy.
Greenonline,
23
W przypadku, gdy ktoś jeszcze tego nie wie, plik JAR jest po prostu plikiem ZIP zawierającym klasy programu, zasoby itp. Oraz niektóre metadane. Możesz go wyodrębnić, aby zobaczyć, jak się składa.
Dlatego używam unzippolecenia, które jest łatwe do zapamiętania i użycia.
unzip -l <jar-file-name>.jar
Na przykład, jeśli masz plik jar z nazwą, test.jartounzip -l test.jar wyświetli całą zawartość pliku jar.
Chociaż wszystkie inne odpowiedzi są świetne, ale w większości z nich będziesz musiał użyć jakiegoś oprogramowania, takiego jak 7 ziplub JDKinnego narzędzia do zaćmienia, podczas gdy nie wymaga to posiadania żadnego z tych dużych s / w i jest domyślnie dostępny w systemie Linux i mac, dzięki czemu jest bardzo lekki i poręczny w użyciu .
Możesz także użyć zipinfo <your jar file>. jeśli twój system operacyjny to obsługuje.
@Boop dzięki za sugestię. doda to do mojej odpowiedzi
Opster Elasticsearch Ninja
1
Jeśli eksplorator plików obsługuje zip, zmiana nazwy słoika na .zip również działa (na przykład w
systemie
16
Nazwy metod, pola itp.
Dodając słoik do projektu w środowisku IDE, zwykle można zobaczyć metody i nazwy pól, ale nie szczegółową implementację. NetBeans może to zrobić, prawdopodobnie Eclipse, prawdopodobnie IntelliJ itp. Możesz przeglądać strukturę jar bezpośrednio w IDE.
Tylko zawartość
Do wszystkiego takiego jak przeglądanie zawartości możesz użyć:
jar tvf jarfile.jar
winzip lub dowolne narzędzie zip
Kod źródłowy
Aby uzyskać dostęp do kodu źródłowego, należy użyć dekompilatora, takiego jak JAD lub jeden z jego interfejsów lub innego dekompilatora. Jeśli kod jest zaciemniony, to ...
Aby wyświetlić zawartość plików, możesz wyodrębnić pliki w folderze poprzez:
jar -xvf file_name.jar
to rozpakuje plik jar i umieści zawartość w tym samym katalogu, w którym go uruchomisz.
Lub w systemie Windows zmień nazwę pliku .jar na .zip, a następnie możesz rozpakować, aby wyodrębnić i wyświetlić zawartość pliku jar. Ponieważ jar jest wewnętrznie plikiem zip.
Jeśli dobrze rozumiem, chcesz zobaczyć nie tylko klasy, ale także metody, właściwości i tak dalej. Jedynym znanym mi narzędziem, które potrafi to zrobić, jest Eclipse - jeśli dodasz jar do ścieżki klas projektu, będziesz mógł przeglądać jego klasy metodami i właściwościami przy użyciu zwykłego eksploratora pakietów.
W każdym razie jest to dobry pomysł na dobre samodzielne narzędzie Java
Pamiętaj, że jar musi znajdować się w folderze „Biblioteki referencyjne”, a nie tylko „libs”. W przypadku biblioteki Apache Commons nie przeglądasz pliku source.jar, przeglądasz oryginał, a następnie dołączasz źródło, gdy poprosi o to Eclipse.
Noumenon,
4
Jad jest niezdarna i nie jest już utrzymywana. Zmieniłem na „Java Decompiler” , który ma elegancki interfejs i obsługę nowych funkcji językowych.
Jednak każdy dekompilator, którego użyłem, uruchamia się w kodzie, który nie dekompiluje. Dla tych pomaga zrozumieć zdemontowany kod bajtu Java wygenerowany przez standardowe narzędzie JDK, javap .
Cóż, plik jar jest tylko plikiem zip, więc jeśli go rozpakujesz (za pomocą swojego ulubionego narzędzia do rozpakowywania), dostaniesz wszystkie pliki w środku.
Jeśli chcesz zajrzeć do plików klas, aby zobaczyć metody, potrzebujesz do tego narzędzia. Jak wspomina PhiLho, Eclipse jest w stanie to zrobić (domyślnie) i sądzę, że większość IDE Java jest w stanie to zrobić.
Przeciągnij dany plik jar do projektu Java. Pojawi się kopia pliku jar.
Kliknij prawym przyciskiem myszy plik jar i wybierz „Build Path” -> „Add to Build Path”.
Plik jar jest przenoszony do węzła „Biblioteki referencyjne”, gdzie można go otwierać i nawigować w okienku Project Explorer.
Jeśli wyświetlanie kodu źródłowego również stanowi problem, otwórz nowe pytanie.
Do nawigacji na poziomie plików jar (jako plik zip) używam 7zip, który działa bardzo dobrze i pozwala na przeglądanie i edycję wpisów, które są świetne do rozwiązywania problemów.
Jednym ze sposobów na to jest otwarcie perspektywy w „Eksploratorze pakietów”. W ten sposób możesz zobaczyć strukturę słoika ze szczegółami klas. W tym celu sprawdź folder biblioteki w swoim projekcie za pomocą eksploratora pakietów.
Okno >> Pokaż widok >> Inne >> Java >> Eksplorator pakietów
Innym sposobem jest użycie JarPlug jako wtyczki Eclipse. Działa to w Eclipse / springsource
Możesz je teraz otworzyć za pomocą większości narzędzi do dekompresji, a następnie po prostu zdobyć coś takiego jak DJ Java Decompiler, jeśli chcesz zobaczyć źródło.
Moim wymaganiem było przejrzenie zawartości pliku (np. Pliku właściwości) wewnątrz słoika, bez faktycznego rozpakowywania słoika. Jeśli ktoś dotarł do tego wątku tak jak ja, wypróbuj to polecenie -
To nie jest najszybszy sposób, ponieważ najpierw musisz przeciągnąć go do swojego zaćmienia. Ale będziesz mieć pełne przeglądanie klas Java, nawet z włączoną dekompilacją.
Ustawiłem domyślną akcję w systemie Windows na „Otwórz za pomocą WinZip”. Ułatwia to zarządzanie plikami JAR jako archiwami. Możesz nawet dodawać / usuwać pliki ręcznie.
Ten Jar Explorer jest wystarczająco dobry.
Obsługuje trzy typy dekompilatorów: JD, Procyon i Fernflower.
Umożliwia wyszukiwanie plików i duplikatów w dowolnym archiwum Java.
Użytkownik może również modyfikować jar za pomocą plików D&D i edytować niektóre pliki nieklasyczne.
Twoje IDE również powinno to obsługiwać. Moje IDE (SlickeEdit) nazywa to „biblioteką znaczników”. Po prostu dodaj bibliotekę znaczników do pliku jar i powinieneś być w stanie przeglądać klasy i metody w sposób hierarchiczny.
Odpowiedzi:
Za pomocą JDK
jar -tf
wyświetli listę plików w słoiku.javap
poda więcej szczegółów z określonego pliku klasy.źródło
tar
on obowiązkowych opcji.C:\Program Files\Java\jdk<version>\bin
do zmiennej środowiskowej PATH systemu lub użytkownika, zanim będzie można użyć jejjar
jako polecenia systemowego. (Gdzie <wersja> jest numerem kompilacji wersji jdk. SprawdźC:\Program Files\Java
)jar tf test.jar | grep MANIFEST
Zazwyczaj otwieram je za pomocą 7-Zip ... Pozwala przynajmniej zobaczyć pakiety, klasy i zasoby.
Gdybym musiał zobaczyć metody lub pola, użyłbym Jad, ale oczywiście lepiej jest polegać na (dobrym) JavaDoc ...
Teraz gdzieś na SO wspomniano o niektórych wtyczkach Eclipse, aby znaleźć w pliku jar, w której znajduje się klasa, być może mogą zrobić więcej (tj. To, o co prosiłeś).
[EDYCJA] Odniesienie do wątku SO. Nie to, o co pytamy, ale w jakiś sposób powiązane, dlatego przydatne: Java: Skąd mam wiedzieć, który plik jar ma być użyty, biorąc pod uwagę nazwę klasy?
źródło
To, czego używam osobiście, to JD-GUI. Jest to darmowy „dekompilator”, ponieważ pozwala zobaczyć kod źródłowy, klasy i obiekty w klasach, a także strukturę plików w menu drzewa po lewej stronie. Nie pozwala to jednak bezpośrednio modyfikować klas.
Strona internetowa JD-GUI: http://jd.benow.ca/
źródło
Dlatego używam
unzip
polecenia, które jest łatwe do zapamiętania i użycia.unzip -l <jar-file-name>.jar
Na przykład, jeśli masz plik jar z nazwą,
test.jar
tounzip -l test.jar
wyświetli całą zawartość pliku jar.Chociaż wszystkie inne odpowiedzi są świetne, ale w większości z nich będziesz musiał użyć jakiegoś oprogramowania, takiego jak
7 zip
lubJDK
innego narzędzia do zaćmienia, podczas gdy nie wymaga to posiadania żadnego z tych dużych s / w i jest domyślnie dostępny w systemie Linux i mac, dzięki czemu jest bardzo lekki i poręczny w użyciu .Możesz także użyć
zipinfo <your jar file>
. jeśli twój system operacyjny to obsługuje.źródło
Nazwy metod, pola itp.
Dodając słoik do projektu w środowisku IDE, zwykle można zobaczyć metody i nazwy pól, ale nie szczegółową implementację. NetBeans może to zrobić, prawdopodobnie Eclipse, prawdopodobnie IntelliJ itp. Możesz przeglądać strukturę jar bezpośrednio w IDE.
Tylko zawartość
Do wszystkiego takiego jak przeglądanie zawartości możesz użyć:
jar tvf jarfile.jar
Kod źródłowy
Aby uzyskać dostęp do kodu źródłowego, należy użyć dekompilatora, takiego jak JAD lub jeden z jego interfejsów lub innego dekompilatora. Jeśli kod jest zaciemniony, to ...
źródło
Rozszerzając odpowiedź Toma Hawtina, możesz potokować listę, aby odfiltrować pożądaną klasę lub pliki:
jar tf my-fat-jar-file.jar | grep filename
Powinno to działać na bash / zsh i similars lub w emacsie.
Informacje dodatkowe: https://docs.oracle.com/javase/tutorial/deployment/jar/view.html
źródło
powyżej wydrukuje tylko nazwy plików .
Aby wyświetlić zawartość plików, możesz wyodrębnić pliki w folderze poprzez:
to rozpakuje plik jar i umieści zawartość w tym samym katalogu, w którym go uruchomisz.
Lub w systemie Windows zmień nazwę pliku .jar na .zip, a następnie możesz rozpakować, aby wyodrębnić i wyświetlić zawartość pliku jar. Ponieważ jar jest wewnętrznie plikiem zip.
źródło
Użyj WinRar . Otworzy dla ciebie strukturę folderów w nienaruszony sposób. Umożliwia także edycję w archiwum, zachowując ścieżki.
W końcu plik JAR jest tylko archiwum ZIP.
źródło
Jeśli chcesz zobaczyć, co jest w środku, po prostu zmień nazwę jako pierwsza opcja poniżej ...
F2 & Rename to jarfile.zip
// Użyj dowolnego rozpakowania ...jar tvf jarfile.jar
jar tf jarfile.jar
źródło
Jeśli dobrze rozumiem, chcesz zobaczyć nie tylko klasy, ale także metody, właściwości i tak dalej. Jedynym znanym mi narzędziem, które potrafi to zrobić, jest Eclipse - jeśli dodasz jar do ścieżki klas projektu, będziesz mógł przeglądać jego klasy metodami i właściwościami przy użyciu zwykłego eksploratora pakietów.
W każdym razie jest to dobry pomysł na dobre samodzielne narzędzie Java
źródło
Jad jest niezdarna i nie jest już utrzymywana. Zmieniłem na „Java Decompiler” , który ma elegancki interfejs i obsługę nowych funkcji językowych.
Jednak każdy dekompilator, którego użyłem, uruchamia się w kodzie, który nie dekompiluje. Dla tych pomaga zrozumieć zdemontowany kod bajtu Java wygenerowany przez standardowe narzędzie JDK, javap .
źródło
Cóż, plik jar jest tylko plikiem zip, więc jeśli go rozpakujesz (za pomocą swojego ulubionego narzędzia do rozpakowywania), dostaniesz wszystkie pliki w środku.
Jeśli chcesz zajrzeć do plików klas, aby zobaczyć metody, potrzebujesz do tego narzędzia. Jak wspomina PhiLho, Eclipse jest w stanie to zrobić (domyślnie) i sądzę, że większość IDE Java jest w stanie to zrobić.
źródło
W Eclipse 3.4
Jeśli wyświetlanie kodu źródłowego również stanowi problem, otwórz nowe pytanie.
Do nawigacji na poziomie plików jar (jako plik zip) używam 7zip, który działa bardzo dobrze i pozwala na przeglądanie i edycję wpisów, które są świetne do rozwiązywania problemów.
źródło
Jednym ze sposobów na to jest otwarcie perspektywy w „Eksploratorze pakietów”. W ten sposób możesz zobaczyć strukturę słoika ze szczegółami klas. W tym celu sprawdź folder biblioteki w swoim projekcie za pomocą eksploratora pakietów.
Okno >> Pokaż widok >> Inne >> Java >> Eksplorator pakietów
Innym sposobem jest użycie JarPlug jako wtyczki Eclipse. Działa to w Eclipse / springsource
http://jar-plug.sourceforge.net/
źródło
Jeśli korzystasz z systemu Windows i używasz programu PowerShell i szukasz pliku w słoiku, możesz:
źródło
Możesz je teraz otworzyć za pomocą większości narzędzi do dekompresji, a następnie po prostu zdobyć coś takiego jak DJ Java Decompiler, jeśli chcesz zobaczyć źródło.
źródło
Bndtools zapewnia darmową wtyczkę przeglądarki JAR dla Eclipse.
Dodaj witrynę aktualizacji Eclipse i zainstaluj tylko przeglądarkę.
źródło
Moim wymaganiem było przejrzenie zawartości pliku (np. Pliku właściwości) wewnątrz słoika, bez faktycznego rozpakowywania słoika. Jeśli ktoś dotarł do tego wątku tak jak ja, wypróbuj to polecenie -
To działało dla mnie dobrze!
źródło
Myślę, że Java Decomplier to najlepsza opcja, którą możesz pobrać stąd: http://jd.benow.ca/
źródło
Wolę przeglądarkę JAR , ma prosty interfejs, w którym można przeglądać wiele plików JAR i wyszukiwać określoną klasę w wielu plikach JAR jednocześnie.
źródło
Eclipse 3.4 JDT
To nie jest najszybszy sposób, ponieważ najpierw musisz przeciągnąć go do swojego zaćmienia. Ale będziesz mieć pełne przeglądanie klas Java, nawet z włączoną dekompilacją.
źródło
Ustawiłem domyślną akcję w systemie Windows na „Otwórz za pomocą WinZip”. Ułatwia to zarządzanie plikami JAR jako archiwami. Możesz nawet dodawać / usuwać pliki ręcznie.
źródło
Ten Jar Explorer jest wystarczająco dobry.
Obsługuje trzy typy dekompilatorów: JD, Procyon i Fernflower.
Umożliwia wyszukiwanie plików i duplikatów w dowolnym archiwum Java.
Użytkownik może również modyfikować jar za pomocą plików D&D i edytować niektóre pliki nieklasyczne.
źródło
Możesz spróbować JarSpy . Istnieje wersja wtyczki IDEA, której używam.
źródło
Twoje IDE również powinno to obsługiwać. Moje IDE (SlickeEdit) nazywa to „biblioteką znaczników”. Po prostu dodaj bibliotekę znaczników do pliku jar i powinieneś być w stanie przeglądać klasy i metody w sposób hierarchiczny.
źródło
Na Macu jest Jarzilla
źródło
Używam JarExplorer lub JarVisualizer .
źródło
Możesz spróbować JarNavigator, aby wyświetlić i przeszukać zawartość pliku jar.
źródło
java -xf some-j.jar
rozpakuje plik JAR.źródło
Możesz także użyć Luyten - Gui Open Source Java Decompiler
źródło