Wyświetlanie zawartości pliku .jar

226

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

Dani
źródło
12
Dlaczego nie akceptujesz odpowiedzi?
Sanghyun Lee
4
@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
zadana
1
Odpowiedź pochodzi z: https://superuser.com/a/808938/1045397 Można to zrobić z vim vim file_name.jar
bajt Mamba

Odpowiedzi:

280

Za pomocą JDK jar -tfwyświetli listę plików w słoiku. javappoda więcej szczegółów z określonego pliku klasy.

Tom Hawtin - tackline
źródło
3
@ 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ś).

[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?

PhiLho
źródło
Link do strony Jad został usunięty, ponieważ adres URL jest zaparkowany. Nadal można go znaleźć na stronie web.archive.org/web/20080106184313/http://www.kpdus.com/... ale Jad i tak jest dziś nieaktualna.
PhiLho,
35

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/

Azulflame
źródło
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.

Opster Elasticsearch Ninja
źródło
1
@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 ...

Społeczność
źródło
10

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

Jose Miguel
źródło
7
jar -tvf file_name.jar

powyżej wydrukuje tylko nazwy plików .

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.

Anil Kapoor
źródło
6

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.

MN
źródło
6

Jeśli chcesz zobaczyć, co jest w środku, po prostu zmień nazwę jako pierwsza opcja poniżej ...

  1. F2 & Rename to jarfile.zip // Użyj dowolnego rozpakowania ...

  2. jar tvf jarfile.jar

  3. jar tf jarfile.jar

Jakiś facet z Jawy
źródło
5

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

Yoni Roit
źródło
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 .

erickson
źródło
3

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ć.

Jeroen Heijmans
źródło
3

W Eclipse 3.4

  1. Przeciągnij dany plik jar do projektu Java. Pojawi się kopia pliku jar.
  2. Kliknij prawym przyciskiem myszy plik jar i wybierz „Build Path” -> „Add to Build Path”.
  3. 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.

Thorbjørn Ravn Andersen
źródło
3

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/

Ziya
źródło
3

Jeśli korzystasz z systemu Windows i używasz programu PowerShell i szukasz pliku w słoiku, możesz:

jar -tf .\[JAR_NAME] | where {$_ -match "[FILENAME]"}
James
źródło
2

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.

John T.
źródło
2

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 -

unzip -p myjar.jar myfile.txt

To działało dla mnie dobrze!

Subhashree Pradhan
źródło
1

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.

audiodude
źródło
1

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ą.

Dennis C
źródło
1

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.

Chris Nava
źródło
1

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. wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

użytkownik12377884
źródło
Proszę nie zamieszczać w odpowiedzi tylko jakiegoś narzędzia lub biblioteki. Przynajmniej pokaż, jak rozwiązuje problem w samej odpowiedzi.
Das_Geek
0

Możesz spróbować JarSpy . Istnieje wersja wtyczki IDEA, której używam.

Dan Dyer
źródło
0

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.

DRZEWO
źródło
0

Możesz spróbować JarNavigator, aby wyświetlić i przeszukać zawartość pliku jar.

Kumarawel
źródło
0

java -xf some-j.jar rozpakuje plik JAR.

MKatleast3
źródło
to jar -xf someJar.jar
Prajwal