Generieren Sie den Quellcode aus der JAR-Datei mit der JD-GUI des Java Decompiler-Projekts

Überblick

Was ist JD-GUI?

Ein inverser Compiler, der Java-Quellcode aus Klassendateien und JAR-Dateien generiert. Es unterstützt auch Anmerkungen, Generika, Aufzählungstypen usw., die nach Java 5 eingeführt wurden.

Java Decompiler

JD-Core is a library that reconstructs Java source code from one or more “.class” files. JD-Core may be used to recover lost source code and explore the source of Java runtime libraries. New features of Java 5, such as annotations, generics or type “enum”, are supported. JD-GUI and JD-Eclipse include JD-Core library.

Herunterladen und ausführen

Laden Sie jd-gui-1.6.6.jar von der offiziellen Website Java Decompiler herunter.

$ wget https://github.com/java-decompiler/jd-gui/releases/download/v1.6.6/jd-gui-1.6.6.jar

Starten Sie die JD-GUI mit dem Befehl java.

$ java -jar jd-gui-1.6.6.jar 
jd1.png

Ziehen Sie die JAR-Datei per Drag & Drop, um sie in Java-Quellcode zu konvertieren.

jd2.png

Sie können eine Zip-Datei mit dem Quellcode erstellen, indem Sie im Menü Datei → Alle Quellen speichern auswählen.

Versuchen Sie, die generierte Zip-Datei zu entpacken.

$ unzip helloworldmod-1.2.3.jar.src.zip 
Archive:  helloworldmod-1.2.3.jar.src.zip
   creating: META-INF/
  inflating: META-INF/MANIFEST.MF    
  inflating: META-INF/mods.toml      
   creating: com/
   creating: com/example/
  inflating: com/example/HelloWorldMod.java  
  inflating: pack.mcmeta             

Der Pfad, in dem sich die JAR-Datei befand, ist mit Kommentaren in den generierten Quellcode eingebettet.

$ cat com/example/HelloWorldMod.java
/*    */ package com.example;
/*    */ 
/*    */ import net.minecraft.entity.player.PlayerEntity;
/*    */ import net.minecraft.util.math.BlockPos;
/*    */ import net.minecraft.util.text.ITextComponent;
/*    */ import net.minecraft.util.text.StringTextComponent;
/*    */ import net.minecraftforge.common.MinecraftForge;
/*    */ import net.minecraftforge.event.entity.player.PlayerEvent;
/*    */ import net.minecraftforge.eventbus.api.SubscribeEvent;
/*    */ import net.minecraftforge.fml.common.Mod;
/*    */ 
/*    */ 
/*    */ @Mod("helloworldmod")
/*    */ public class HelloWorldMod
/*    */ {
/*    */   public HelloWorldMod() {
/* 17 */     MinecraftForge.EVENT_BUS.register(this);
/*    */   }
/*    */ 
/*    */ 
/*    */ 
/*    */ 
/*    */ 
/*    */ 
/*    */   
/*    */   @SubscribeEvent
/*    */   public void onPlayerLoggedIn(PlayerEvent.PlayerLoggedInEvent event) {
/* 28 */     PlayerEntity player = event.getPlayer();
/* 29 */     BlockPos pos = player.func_180425_c();
/*    */ 
/*    */ 
/*    */     
/* 33 */     String message = "Hello, World!\n[name]=[" + player.func_200200_C_().func_150254_d() + "]\n[pos]=[" + pos.func_177958_n() + "," + pos.func_177956_o() + "," + pos.func_177952_p() + "]";
/* 34 */     StringTextComponent stringTextComponent = new StringTextComponent(message);
/* 35 */     player.func_145747_a((ITextComponent)stringTextComponent);
/*    */   }
/*    */ }


/* Location:              /Users/johndoe/hello/build/libs/helloworldmod-1.2.3.jar!/com/example/HelloWorldMod.class
 * Java compiler version: 8 (52.0)
 * JD-Core Version:       1.1.3
 */

Referenzmaterial

Recommended Posts

Generieren Sie den Quellcode aus der JAR-Datei mit der JD-GUI des Java Decompiler-Projekts
Generieren Sie HashMap aus einer XML-Ressourcendatei
Generieren Sie den Quellcode aus der JAR-Datei mit der JD-GUI des Java Decompiler-Projekts
[Spring] Lesen Sie mit MessageSource eine Nachricht aus einer YAML-Datei
So kehren Sie die Kompilierung der Apk-Datei in Java-Quellcode mit MAC um
Code Java von Emacs mit Eclim
Grundstruktur des Java-Quellcodes
Führen Sie Java-Code von cpp auf cocos2dx aus
Vergleich von Alibabas Open Source Sentinel Java Flow Control-Projekt und Hystrix
[Java] Holen Sie sich MimeType aus dem Inhalt der Datei mit Apathce Tika [Kotlin]
JAVA: jar, aar, zeige den Inhalt der Datei an
Bereinigen Sie findViewById aus dem Quellcode mit DataBindingLibrary
Erstellen Sie eine Jar-Datei mit zwei Befehlszeilen
Fügen Sie das Bild mit der statischen Java-Methode in die JAR-Datei ein
[Java] Holen Sie sich die Datei unabhängig von der Umgebung in das JAR
Java (geteilte Quelldatei)
Eval Java-Quelle von Java
Geben Sie beim Erstellen mit Maven den Zeichencode der Quelle an
Generieren Sie Stream aus einem Array primitiver Typen in Java
Beispiel für die Verwendung der Bulk-API von Salesforce vom Java-Client mit PK-Chunking
So öffnen Sie eine Skriptdatei von Ubuntu mit VS-Code
Was ich aus Java gelernt habe, funktioniert mit Visual Studio Code
Überschreiben Sie den gleichnamigen Upload mit dem BOX SDK (Java).
[Gradle] Erstellen Sie ein Java-Projekt mit einer Konfiguration, die von der Konvention abweicht