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
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
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.
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ć jej jar
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?
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/
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 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
lub JDK
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.
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.
Do wszystkiego takiego jak przeglądanie zawartości możesz użyć:
jar tvf jarfile.jar
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 ...
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
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.
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.
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
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
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ć.
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.
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.
Bndtools zapewnia darmową wtyczkę przeglądarki JAR dla Eclipse.
Dodaj witrynę aktualizacji Eclipse i zainstaluj tylko przeglądarkę.
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!
Myślę, że Java Decomplier to najlepsza opcja, którą możesz pobrać stąd: http://jd.benow.ca/
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.
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.
Używam JarExplorer lub JarVisualizer .
Możesz spróbować JarNavigator, aby wyświetlić i przeszukać zawartość pliku jar.
Możesz także użyć Luyten - Gui Open Source Java Decompiler