Was ist der einfachste Weg, um Klassen, Methoden, Eigenschaften usw. in einer JAR-Datei anzuzeigen? Ich suche etwas, das dem sehr nützlichen Lutz Roeder .NET Reflector entspricht - für Java
@ HughLee Der Typ, der das gefragt hat, hat vor 8 Jahren gefragt . Deshalb muss es eine automatische Annahme geben, nachdem eine Antwort 100 positive Stimmen erreicht hat. IMO
Kolob Canyon
@ KolobCanyon wahr, aber die bestbewertete Antwort wurde am selben Tag eingereicht, an dem diese Frage gestellt wurde
@salvob Sie benötigen den Bindestrich nicht, da er tarmit den obligatorischen Optionen benötigt wird.
Tom Hawtin - Tackline
2
C:\Program Files\Java\jdk<version>\binZu Ihrer Information: Möglicherweise müssen Sie Ihrem System oder Benutzer die Umgebungsvariable PATH hinzufügen , bevor Sie sie jarals Systembefehl verwenden können. (Wobei <Version> Ihre JDK-Versionsnummer ist. Checken Sie sie ein C:\Program Files\Java)
Um den Inhalt von Nicht-Klassendateien (wie Manifest) zu sehen, möchten Sie jar tf test.jar | grep MANIFEST
Folgendes
55
Normalerweise öffne ich sie mit 7-Zip ... Es ermöglicht zumindest das Anzeigen von Paketen, Klassen und Ressourcen.
Sollte ich Methoden oder Felder sehen müssen, würde ich Jad verwenden, aber natürlich ist es besser, sich auf (gutes) JavaDoc zu verlassen ...
Irgendwo auf SO wurden einige Eclipse-Plug-Ins erwähnt, um herauszufinden, in welcher JAR-Datei sich eine Klasse befindet. Vielleicht können sie mehr (dh was Sie angefordert haben).
Was ich persönlich benutze, ist JD-GUI. Es ist ein kostenloser 'Dekompiler', mit dem Sie den Quellcode, die Klassen und Objekte in den Klassen sowie die Dateistruktur in einem Baummenü auf der linken Seite anzeigen können. Sie können die Klassen jedoch nicht direkt ändern.
Dies funktioniert plattformübergreifend, während 7-Zip, das in einer anderen Antwort erwähnt wird, Windows-spezifisch ist.
Brad Cupit
Ich habe das Archivierungsprogramm unter OS X verwendet und es hat gut funktioniert. Die meisten (un) zip-Dienstprogramme sollten unabhängig von der Plattform funktionieren.
Greenonline
23
Falls jemand dies noch nicht weiß, ist eine JAR-Datei nur eine ZIP-Datei, die die Klassen, Ressourcen usw. des Programms und einige Metadaten enthält. Sie können eine extrahieren, um zu sehen, wie sie zusammengesetzt ist.
Daher verwende ich einen unzipBefehl, der leicht zu merken und zu verwenden ist.
unzip -l <jar-file-name>.jar
Zum Beispiel, wenn Sie eine JAR - Datei mit dem Namen haben test.jardann unzip -l test.jarlisten alle den Inhalt der JAR - Datei.
Alle anderen Antworten sind zwar großartig, aber in den meisten von ihnen müssten Sie eine Software wie 7 zipoder JDKein anderes Eclipse-Tool verwenden, obwohl Sie dafür keine dieser großen S / W-Dateien benötigen und diese standardmäßig unter Linux verfügbar sind und Mac so ist es sehr leicht und handlich zu bedienen .
Sie können auch verwenden zipinfo <your jar file>. wenn Ihr Betriebssystem dies unterstützt.
@Boop danke für den Vorschlag. wird es zu meiner Antwort hinzufügen
Opster Elasticsearch Ninja
1
Wenn der Datei-Explorer zip unterstützt, funktioniert das Umbenennen des JAR in .zip auch (zum Beispiel unter Windows)
Rhayene
16
Methodennamen, Felder usw.
Wenn Sie einem Projekt in einer IDE ein JAR hinzufügen, werden normalerweise Methoden und Feldnamen angezeigt, nicht jedoch die detaillierte Implementierung. NetBeans kann das, Eclipse wahrscheinlich, IntelliJ wahrscheinlich usw. Sie können die JAR-Struktur direkt in der IDE durchsuchen.
Nur der Inhalt
Zum Anzeigen des Inhalts können Sie Folgendes verwenden:
jar tvf jarfile.jar
winzip oder ein beliebiges Zip-Tool
Der Quellcode
Um auf den Quellcode zuzugreifen, verwenden Sie einen Dekompiler wie JAD oder eines seiner Frontends oder einen anderen Dekompiler. Wenn der Code verschleiert ist, dann ...
Um den Inhalt von Dateien anzuzeigen, können Sie die Dateien in einem Ordner extrahieren, indem Sie:
jar -xvf file_name.jar
Dadurch wird die JAR-Datei entpackt und der Inhalt in dasselbe Verzeichnis gestellt, in dem Sie dies ausführen.
Oder benennen Sie in Windows die JAR-Datei in ZIP um und entpacken Sie sie, um den Inhalt der JAR-Datei zu extrahieren und anzuzeigen. Als jar ist intern eine zip datei.
Verwenden Sie WinRar . Die Ordnerstruktur wird auf intakte Weise für Sie geöffnet. Ermöglicht auch die Bearbeitung im Archiv unter Beibehaltung von Pfaden.
Schließlich ist eine JAR-Datei nur ein ZIP-Archiv.
Wenn ich das richtig verstehe, möchten Sie nicht nur Klassen, sondern auch Methoden, Eigenschaften usw. sehen. Das einzige Tool, von dem ich weiß, dass es dies kann, ist Eclipse. Wenn Sie dem Projektklassenpfad ein JAR hinzufügen, können Sie seine Klassen mit Methoden und Eigenschaften mit dem üblichen Paket-Explorer durchsuchen.
Auf jeden Fall ist dies eine gute Idee für ein gutes eigenständiges Java-Tool
Beachten Sie, dass sich das JAR im Ordner "Referenzierte Bibliotheken" befinden muss, nicht nur im Ordner "libs". Und im Fall der Apache Commons-Bibliothek durchsuchen Sie nicht die Datei source.jar, sondern das Original und hängen die Quelle an, wenn Eclipse Sie dazu auffordert.
Noumenon
4
Jad ist klunkig und wird nicht mehr gepflegt. Ich habe zu "Java Decompiler" gewechselt , das eine übersichtliche Benutzeroberfläche hat und neue Sprachfunktionen unterstützt.
Jeder Dekompiler, den ich verwendet habe, stößt auf Code, den er nicht erfolgreich dekompiliert. Für diese hilft es, den zerlegten Java-Bytecode zu verstehen, der vom Standard-JDK-Tool javap erzeugt wird .
Nun, eine JAR-Datei ist nur eine Zip-Datei. Wenn Sie sie also entpacken (mit Ihrem bevorzugten Dienstprogramm zum Entpacken), erhalten Sie alle darin enthaltenen Dateien.
Wenn Sie in die Klassendateien schauen möchten, um die Methoden zu sehen, benötigen Sie dafür ein Tool. Wie PhiLho erwähnt, kann Eclipse dies (standardmäßig), und ich würde denken, dass die meisten Java-IDEs dazu in der Lage sind.
Ziehen Sie die betreffende JAR-Datei in ein Java-Projekt. Eine Kopie der JAR-Datei wird angezeigt.
Klicken Sie mit der rechten Maustaste auf die JAR-Datei und wählen Sie "Erstellungspfad" -> "Zum Erstellungspfad hinzufügen".
Die Jar-Datei wird in den Knoten "Referenzierte Bibliotheken" verschoben, wo sie im Projekt-Explorer-Bereich geöffnet und navigiert werden kann.
Wenn auch das Anzeigen von Quellcode ein Problem darstellt, öffnen Sie eine neue Frage.
Für die Navigation auf Jar-Dateiebene (als Zip-Datei) verwende ich 7zip, das sehr gut funktioniert und das Anzeigen und Bearbeiten von Einträgen ermöglicht, was sich hervorragend zur Fehlerbehebung eignet.
Eine Möglichkeit, dies zu tun, besteht darin, die Perspektive im "Paket-Explorer" zu öffnen. Auf diese Weise können Sie die Struktur Ihres Glases mit Klassendetails sehen. Überprüfen Sie dazu den Bibliotheksordner in Ihrem Projekt mit dem Paket-Explorer.
Fenster >> Ansicht anzeigen >> Andere >> Java >> Paket-Explorer
Eine andere Möglichkeit ist, JarPlug als Eclipse-Plugin zu verwenden. Dies funktioniert in Eclipse / Springsource
Sie können sie heutzutage mit den meisten Dekomprimierungsprogrammen öffnen und dann einfach so etwas wie DJ Java Decompiler herunterladen, wenn Sie die Quelle anzeigen möchten.
Meine Anforderung bestand darin, den Inhalt einer Datei (wie einer Eigenschaftendatei) im Glas anzuzeigen, ohne das Glas tatsächlich zu extrahieren. Wenn jemand diesen Thread genau wie ich erreicht hat, versuchen Sie diesen Befehl -
Ich bevorzuge den JAR-Browser . Er verfügt über eine einfache Oberfläche, über die Sie mehrere JARs durchsuchen und über mehrere JARs hinweg gleichzeitig nach einer bestimmten Klasse suchen können.
Dies ist nicht der schnellste Weg, da Sie ihn zuerst in Ihre Sonnenfinsternis ziehen müssen. Sie können jedoch auch bei aktivierter Dekompilierung die Java-Klasse vollständig durchsuchen.
Ich habe die Standardaktion in Windows auf "Mit WinZip öffnen" gesetzt. Dies erleichtert die Verwaltung von JARs als Archive. Sie können Dateien sogar manuell hinzufügen / entfernen.
Dieser Jar Explorer ist gut genug.
Unterstützt drei Dekompilertypen: JD, Procyon und Fernflower.
Ermöglicht das Durchsuchen von Dateien und Duplikaten in jedem Java-Archiv.
Außerdem kann der Benutzer jar durch D & D-Dateien ändern und einige Nicht-Klassendateien bearbeiten.
Ihre IDE sollte dies ebenfalls unterstützen. Meine IDE (SlickeEdit) nennt es eine "Tag-Bibliothek". Fügen Sie einfach eine Tag-Bibliothek für die JAR-Datei hinzu, und Sie sollten in der Lage sein, die Klassen und Methoden hierarchisch zu durchsuchen.
Antworten:
Wenn Sie das JDK verwenden,
jar -tf
werden die Dateien im JAR aufgelistet.javap
gibt Ihnen weitere Details aus einer bestimmten Klassendatei.quelle
tar
mit den obligatorischen Optionen benötigt wird.C:\Program Files\Java\jdk<version>\bin
Zu Ihrer Information: Möglicherweise müssen Sie Ihrem System oder Benutzer die Umgebungsvariable PATH hinzufügen , bevor Sie siejar
als Systembefehl verwenden können. (Wobei <Version> Ihre JDK-Versionsnummer ist. Checken Sie sie einC:\Program Files\Java
)jar tf test.jar | grep MANIFEST
Normalerweise öffne ich sie mit 7-Zip ... Es ermöglicht zumindest das Anzeigen von Paketen, Klassen und Ressourcen.
Sollte ich Methoden oder Felder sehen müssen, würde ich Jad verwenden, aber natürlich ist es besser, sich auf (gutes) JavaDoc zu verlassen ...
Irgendwo auf SO wurden einige Eclipse-Plug-Ins erwähnt, um herauszufinden, in welcher JAR-Datei sich eine Klasse befindet. Vielleicht können sie mehr (dh was Sie angefordert haben).
[EDIT] Verweis auf SO-Thread. Nicht was gefragt wird, sondern irgendwie verwandt, also nützlich: Java: Woher weiß ich, welche JAR-Datei unter einem Klassennamen verwendet werden soll?
quelle
Was ich persönlich benutze, ist JD-GUI. Es ist ein kostenloser 'Dekompiler', mit dem Sie den Quellcode, die Klassen und Objekte in den Klassen sowie die Dateistruktur in einem Baummenü auf der linken Seite anzeigen können. Sie können die Klassen jedoch nicht direkt ändern.
Website von JD-GUI: http://jd.benow.ca/
quelle
Daher verwende ich einen
unzip
Befehl, der leicht zu merken und zu verwenden ist.unzip -l <jar-file-name>.jar
Zum Beispiel, wenn Sie eine JAR - Datei mit dem Namen haben
test.jar
dannunzip -l test.jar
listen alle den Inhalt der JAR - Datei.Alle anderen Antworten sind zwar großartig, aber in den meisten von ihnen müssten Sie eine Software wie
7 zip
oderJDK
ein anderes Eclipse-Tool verwenden, obwohl Sie dafür keine dieser großen S / W-Dateien benötigen und diese standardmäßig unter Linux verfügbar sind und Mac so ist es sehr leicht und handlich zu bedienen .Sie können auch verwenden
zipinfo <your jar file>
. wenn Ihr Betriebssystem dies unterstützt.quelle
Methodennamen, Felder usw.
Wenn Sie einem Projekt in einer IDE ein JAR hinzufügen, werden normalerweise Methoden und Feldnamen angezeigt, nicht jedoch die detaillierte Implementierung. NetBeans kann das, Eclipse wahrscheinlich, IntelliJ wahrscheinlich usw. Sie können die JAR-Struktur direkt in der IDE durchsuchen.
Nur der Inhalt
Zum Anzeigen des Inhalts können Sie Folgendes verwenden:
jar tvf jarfile.jar
Der Quellcode
Um auf den Quellcode zuzugreifen, verwenden Sie einen Dekompiler wie JAD oder eines seiner Frontends oder einen anderen Dekompiler. Wenn der Code verschleiert ist, dann ...
quelle
Wenn Sie die Antwort von Tom Hawtin erweitern, können Sie die Liste weiterleiten, um die gewünschten Klassen oder Dateien herauszufiltern:
jar tf my-fat-jar-file.jar | grep filename
Dies sollte auf bash / zsh und ähnlichen oder emacs 'eshell funktionieren.
Zusätzliche Informationen: https://docs.oracle.com/javase/tutorial/deployment/jar/view.html
quelle
oben werden nur die Namen der Dateien gedruckt .
Um den Inhalt von Dateien anzuzeigen, können Sie die Dateien in einem Ordner extrahieren, indem Sie:
Dadurch wird die JAR-Datei entpackt und der Inhalt in dasselbe Verzeichnis gestellt, in dem Sie dies ausführen.
Oder benennen Sie in Windows die JAR-Datei in ZIP um und entpacken Sie sie, um den Inhalt der JAR-Datei zu extrahieren und anzuzeigen. Als jar ist intern eine zip datei.
quelle
Verwenden Sie WinRar . Die Ordnerstruktur wird auf intakte Weise für Sie geöffnet. Ermöglicht auch die Bearbeitung im Archiv unter Beibehaltung von Pfaden.
Schließlich ist eine JAR-Datei nur ein ZIP-Archiv.
quelle
Wenn Sie sehen möchten, was sich darin befindet, benennen Sie es einfach als erste Option unten um.
F2 & Rename to jarfile.zip
// Benutze einen beliebigen Reißverschluss ...jar tvf jarfile.jar
jar tf jarfile.jar
quelle
Wenn ich das richtig verstehe, möchten Sie nicht nur Klassen, sondern auch Methoden, Eigenschaften usw. sehen. Das einzige Tool, von dem ich weiß, dass es dies kann, ist Eclipse. Wenn Sie dem Projektklassenpfad ein JAR hinzufügen, können Sie seine Klassen mit Methoden und Eigenschaften mit dem üblichen Paket-Explorer durchsuchen.
Auf jeden Fall ist dies eine gute Idee für ein gutes eigenständiges Java-Tool
quelle
Jad ist klunkig und wird nicht mehr gepflegt. Ich habe zu "Java Decompiler" gewechselt , das eine übersichtliche Benutzeroberfläche hat und neue Sprachfunktionen unterstützt.
Jeder Dekompiler, den ich verwendet habe, stößt auf Code, den er nicht erfolgreich dekompiliert. Für diese hilft es, den zerlegten Java-Bytecode zu verstehen, der vom Standard-JDK-Tool javap erzeugt wird .
quelle
Nun, eine JAR-Datei ist nur eine Zip-Datei. Wenn Sie sie also entpacken (mit Ihrem bevorzugten Dienstprogramm zum Entpacken), erhalten Sie alle darin enthaltenen Dateien.
Wenn Sie in die Klassendateien schauen möchten, um die Methoden zu sehen, benötigen Sie dafür ein Tool. Wie PhiLho erwähnt, kann Eclipse dies (standardmäßig), und ich würde denken, dass die meisten Java-IDEs dazu in der Lage sind.
quelle
In Eclipse 3.4 tun
Wenn auch das Anzeigen von Quellcode ein Problem darstellt, öffnen Sie eine neue Frage.
Für die Navigation auf Jar-Dateiebene (als Zip-Datei) verwende ich 7zip, das sehr gut funktioniert und das Anzeigen und Bearbeiten von Einträgen ermöglicht, was sich hervorragend zur Fehlerbehebung eignet.
quelle
Eine Möglichkeit, dies zu tun, besteht darin, die Perspektive im "Paket-Explorer" zu öffnen. Auf diese Weise können Sie die Struktur Ihres Glases mit Klassendetails sehen. Überprüfen Sie dazu den Bibliotheksordner in Ihrem Projekt mit dem Paket-Explorer.
Fenster >> Ansicht anzeigen >> Andere >> Java >> Paket-Explorer
Eine andere Möglichkeit ist, JarPlug als Eclipse-Plugin zu verwenden. Dies funktioniert in Eclipse / Springsource
http://jar-plug.sourceforge.net/
quelle
Wenn Sie sich in Windows befinden und Powershell verwenden und nach einer Datei in einem Glas suchen, können Sie Folgendes tun:
quelle
Sie können sie heutzutage mit den meisten Dekomprimierungsprogrammen öffnen und dann einfach so etwas wie DJ Java Decompiler herunterladen, wenn Sie die Quelle anzeigen möchten.
quelle
Bndtools bietet ein kostenloses JAR-Viewer-Plugin für Eclipse.
Fügen Sie die Eclipse-Update-Site hinzu und installieren Sie nur den Viewer.
quelle
Meine Anforderung bestand darin, den Inhalt einer Datei (wie einer Eigenschaftendatei) im Glas anzuzeigen, ohne das Glas tatsächlich zu extrahieren. Wenn jemand diesen Thread genau wie ich erreicht hat, versuchen Sie diesen Befehl -
Das hat bei mir gut funktioniert!
quelle
Ich denke, Java Decomplier ist Ihre beste Option, die Sie hier herunterladen können: http://jd.benow.ca/
quelle
Ich bevorzuge den JAR-Browser . Er verfügt über eine einfache Oberfläche, über die Sie mehrere JARs durchsuchen und über mehrere JARs hinweg gleichzeitig nach einer bestimmten Klasse suchen können.
quelle
Eclipse 3.4 JDT
Dies ist nicht der schnellste Weg, da Sie ihn zuerst in Ihre Sonnenfinsternis ziehen müssen. Sie können jedoch auch bei aktivierter Dekompilierung die Java-Klasse vollständig durchsuchen.
quelle
Ich habe die Standardaktion in Windows auf "Mit WinZip öffnen" gesetzt. Dies erleichtert die Verwaltung von JARs als Archive. Sie können Dateien sogar manuell hinzufügen / entfernen.
quelle
Dieser Jar Explorer ist gut genug.
Unterstützt drei Dekompilertypen: JD, Procyon und Fernflower.
Ermöglicht das Durchsuchen von Dateien und Duplikaten in jedem Java-Archiv.
Außerdem kann der Benutzer jar durch D & D-Dateien ändern und einige Nicht-Klassendateien bearbeiten.
quelle
Sie könnten JarSpy versuchen . Es gibt eine IDEA-Plugin-Version davon, die ich verwende.
quelle
Ihre IDE sollte dies ebenfalls unterstützen. Meine IDE (SlickeEdit) nennt es eine "Tag-Bibliothek". Fügen Sie einfach eine Tag-Bibliothek für die JAR-Datei hinzu, und Sie sollten in der Lage sein, die Klassen und Methoden hierarchisch zu durchsuchen.
quelle
Auf dem Mac gibt es Jarzilla
quelle
Ich benutze JarExplorer oder JarVisualizer .
quelle
Sie können JarNavigator ausprobieren , um den Inhalt einer JAR-Datei anzuzeigen und zu durchsuchen.
quelle
java -xf some-j.jar
entpackt eine JAR-Datei.quelle
Sie können auch Luyten - eine Open Source Java Decompiler Gui verwenden
quelle