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
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
Antworten:
Wenn Sie das JDK verwenden, jar -tf
werden die Dateien im JAR aufgelistet. javap
gibt Ihnen weitere Details aus einer bestimmten Klassendatei.
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 sie jar
als Systembefehl verwenden können. (Wobei <Version> Ihre JDK-Versionsnummer ist. Checken Sie sie ein C:\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?
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/
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 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
dann unzip -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
oder JDK
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.
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.
Zum Anzeigen des Inhalts können Sie Folgendes verwenden:
jar tvf jarfile.jar
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 ...
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
jar -tvf file_name.jar
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:
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 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
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
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.
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.
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.
Bndtools bietet ein kostenloses JAR-Viewer-Plugin für Eclipse.
Fügen Sie die Eclipse-Update-Site hinzu und installieren Sie nur den Viewer.
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 -
unzip -p myjar.jar myfile.txt
Das hat bei mir gut funktioniert!
Ich denke, Java Decomplier ist Ihre beste Option, die Sie hier herunterladen können: http://jd.benow.ca/
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.
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.
Ich benutze JarExplorer oder JarVisualizer .
Sie können JarNavigator ausprobieren , um den Inhalt einer JAR-Datei anzuzeigen und zu durchsuchen.
Sie können auch Luyten - eine Open Source Java Decompiler Gui verwenden