Extrahieren Sie den Quellcode aus der JAR-Datei

172

Gibt es eine Möglichkeit, den Quellcode aus einer ausführbaren JAR-Datei (Java ME) zu extrahieren?

Hiba
quelle
3
Beachten Sie jedoch, dass dies möglicherweise illegal ist, je nachdem, ob Sie das Urheberrecht an dem Glas besitzen, in welchem ​​Land Sie leben und zu welchem ​​Zweck Sie dies tun.
Richard
2
Wenn es Open Source ist, beziehen Sie die Quelle vom Entwickler. Andernfalls "wird die Einhaltung der EULA geschätzt".
Andrew Thompson
Überprüfen Sie den Procyon-Dekompiler. Laden Sie es jar herunter, um jar-Dateien zu dekompilieren. Ich habe Schritte unten gegeben
Nitin Angadi

Antworten:

146

Verwenden Sie die JD-GUI . Öffnen Sie die Anwendung, ziehen Sie Ihre JAR-Datei per Drag & Drop hinein.

adarshr
quelle
6
Gibt es eine Möglichkeit, Quellcode von .jar ohne JD GUI abzurufen?
Zulqurnain Jutt
@ZulqurnainJutt verwenden, wie in der Antwort von @ elachance erwähntjar xf filename.jar
Arvind Sridharan
46

Sie können eine JAR-Datei mit dem folgenden Befehl extrahieren:

jar xf filename.jar

Referenzen: Oracle JAR-Dokumentation

elachance
quelle
18
Dies entspricht dem Umbenennen filename.jarin filename.jar.zipund dem anschließenden Entpacken.
Mathias Bynens
27
Dadurch wird der Quellcode nicht extrahiert. Es extrahiert den kompilierten Quellcode.
0xcaff
5
@caffinatedmonkey extrahiert Quellcode, wenn das Glas Java-Dateien enthält, z. B. Jars mit Namen, die normalerweise mit "-sources" enden. Es extrahiert in der Tat nur .class-Dateien, wenn das jar keine Java-Quelldateien enthält.
Edwardmp
37

Ich glaube, das geht sehr einfach. Sie können die Quelldateien (Java-Dateien) einer JAR-Datei jederzeit in eine Zip-Datei extrahieren.

Schritte zum Abrufen von Quellen für eine JAR-Datei als Zip:

  1. Laden Sie JAD von http://techieme.in/resources-needed/ herunter und speichern Sie es an einem beliebigen
    Ort auf Ihrem System.
  2. Ziehen Sie das Glas, für das Sie die Quellen möchten, auf den JAD und legen Sie es dort ab. 3 Die JAD-Benutzeroberfläche wird mit der gesamten Paketstruktur in einem Baumformat geöffnet.
  3. Klicken Sie auf das Menü Datei und wählen Sie JAR-Quellen speichern.
  4. Die Quellen werden als Zip mit demselben Namen wie das Glas gespeichert.

Hoffe das hilft.

Der Link ist aus irgendeinem Grund tot. Fügen Sie daher den Link hinzu, von dem Sie die JDGUI herunterladen können

Dharam
quelle
1
@Nitesh ... Ich werde den auf meiner Website gehosteten Link veröffentlichen ... bitte laden Sie ihn von dort herunter
Dharam
4
Die Version im Techieme-Link funktioniert wunderbar, danke!
DerStrom8
29

Ihre JAR kann Quelle und Javadoc enthalten. In diesem Fall können Sie sie einfach jar xf my.jarzum Extrahieren verwenden.

Andernfalls können Sie einen Dekompiler verwenden, wie in der Antwort von adarshr erwähnt:

Verwenden Sie die JD-GUI . Öffnen Sie die Anwendung, ziehen Sie Ihre JAR-Datei per Drag & Drop hinein.

Matthew Willis
quelle
21
Beachten Sie, dass JAR-Dateien tatsächlich ZIP-Dateien sind und mit jedem ZIP-Tool geöffnet werden können.
Chris Nava
11

Ich weiß, dass es eine alte Frage ist. Ich dachte immer noch, es würde jemandem helfen

1) Wechseln Sie in den Ordner Ihrer JAR-Datei.

2) Ändern Sie die Erweiterung in .zip.

3) Sie können loslegen und es einfach durch Doppelklicken extrahieren.

Hinweis: Ich habe dies in MAC getestet, es funktioniert. Hoffentlich funktioniert es auch unter Windows.

daran interessiert
quelle
2
@JCodex, ich mache ein Forschungsprojekt über das Stimmungsanalyse-Tool "Opinionfinder" und sein Jar enthält tatsächlich sowohl Java- als auch Klassendateien. Ihr Kommentar ist also nicht 100% wahr. Ich weiß, dass es normalerweise nur .class enthalten würde, aber zumindest nicht in diesem Fall
wired00
2
Ihre Lösung extrahiert nur .class-Dateien, nicht den Quellcode.
Carlos Sá
JD-GUI scheint ein plattformübergreifendes Tool zu sein, das den Code tatsächlich dekompiliert und den Quellcode für Klassen in allen Paketen anzeigt. Ich habe es versucht und konnte den Quellcode in einer Sekunde in MacOS erhalten. Ich habe Java 8 installiert. Sie können es auf jd.benow.ca herunterladen. Sie sind sich nicht sicher, ob es für große Projekte funktioniert.
Carlos Sá
1
benötigen Quellcode, der nicht so
bereitgestellt wird,
3

Gehen Sie auf Ihrer Linux-Box, auf der Java funktioniert, wie folgt vor (wenn Ihnen die Terminal-Vorgehensweise gefällt)

cd ~
mkdir decompiled_code && cd decompiled_code
wget https://bitbucket.org/mstrobel/procyon/downloads/procyon-decompiler-0.5.36.jar
java -jar procyon-decompiler-0.5.36.jar /Path/to/your/jar -o .

HINWEIS : Wie @Richard kommentierte: "Dies kann illegal sein, je nachdem, ob Sie das Urheberrecht an dem Glas besitzen, in welchem ​​Land Sie leben und zu welchem ​​Zweck Sie dies tun."

Nitin Angadi
quelle
Für eine bestimmte Klassendatei können Sie java -jar procyon-decompiler-0.5.36.jar package / of / the / java / class.class> className.java
nitin angadi
0

AndroChef Java Decompiler erzeugt sehr guten Code, den Sie direkt in Ihren Projekten verwenden können ...

Nik theGeeK
quelle
-2

Die oben genannten Werkzeuge extrahieren das Glas. Es gibt auch bestimmte andere Tools und Befehle, um das Glas zu extrahieren. Aber AFAIK Sie können den Java-Code nicht erhalten, falls der Code verschleiert wurde.

Vishal
quelle
7
Die
beste
-6

Angenommen, Ihre JAR-Datei befindet sich in C: \ Dokumente und Einstellungen \ mmeher \ Desktop \ jar und der Name der JAR-Datei lautet xx.jar. Schreiben Sie dann die folgenden zwei Befehle in die Eingabeaufforderung:

1> cd C: \ Dokumente und Einstellungen \ mmeher \ Desktop \ jar

2> jar xf xx.jar

Manas
quelle
-6

- Verdecken Sie die JAR-Datei in ZIP (in Windows ändern Sie einfach die Erweiterung). Entpacken Sie den ZIP-Ordner. Sie erhalten vollständige Java-Dateien

Pavan T.
quelle
3
Als kleine Anmerkung zu dieser Methode ... Es ist wahr, dass JAR-Dateien ausgefallene Zip-Dateien sind. Das Entpacken eines JARs führt jedoch höchstwahrscheinlich zu * .class-Dateien, dh "kompilierten" Java-Dateien. Es ist möglich, Klassendateien in normale Java-Dateien zu "dekompilieren". Diese Funktionalität ist in vielen IDEs enthalten
Daniel Hernandez
Dies wird nur Klassendateien entsperren
Harshil