Générer le code source à partir du fichier JAR avec JD-GUI du projet Java Decompiler

Aperçu

--Générer le code source à partir du fichier JAR avec JD-GUI du projet Java Decompiler --Cet environnement: macOS Catalina + Java 11 (AdoptOpenJDK 11.0.6)

Qu'est-ce que JD-GUI?

Un compilateur inverse qui génère du code source Java à partir de fichiers de classe et de fichiers JAR. Il prend également en charge les annotations, les génériques, les types d'énumération, etc. introduits après Java 5.

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.

Téléchargez et exécutez

Téléchargez jd-gui-1.6.6.jar depuis le site officiel Java Decompiler.

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

Démarrez JD-GUI avec la commande java.

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

Faites glisser et déposez le fichier jar pour le convertir en code source Java.

jd2.png

Vous pouvez générer un fichier zip contenant le code source en sélectionnant Fichier → Enregistrer toutes les sources dans le menu.

Essayez de décompresser le fichier zip généré.

$ 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             

Le chemin d'accès au fichier jar est incorporé dans le code source généré avec des commentaires.

$ 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
 */

Matériel de référence

Recommended Posts

Générer le code source à partir du fichier JAR avec JD-GUI du projet Java Decompiler
Générer HashMap à partir du fichier de ressources XML
Générer le code source à partir du fichier JAR avec JD-GUI du projet Java Decompiler
[Spring] Lire un message à partir d'un fichier YAML avec MessageSource
Comment inverser la compilation du fichier apk en code source Java avec MAC
Coder Java depuis Emacs avec Eclim
Structure de base du code source Java
Exécutez du code Java à partir de cpp sur cocos2dx
Comparaison du projet Open Source Sentinel Java Flow Control d'Alibaba et Hystrix
[Java] Récupère MimeType à partir du contenu du fichier avec Apathce Tika [Kotlin]
JAVA: jar, aar, affichez le contenu du fichier
Nettoyer findViewById du code source avec DataBindingLibrary
Créez un fichier Jar avec deux lignes de commande
Inclure l'image dans le fichier jar avec la méthode statique java
[Java] Récupère le fichier dans le fichier jar quel que soit l'environnement
java (fichier source fractionné)
Évaluer la source Java à partir de Java
Spécifiez le code de caractère de la source lors de la construction avec Maven
Générer un flux à partir d'un tableau de types primitifs en Java
Exemple d'utilisation de l'API Bulk de Salesforce à partir d'un client Java avec PK-chunking
Comment ouvrir un fichier de script à partir d'Ubuntu avec du code VS
Ce que j'ai appris en travaillant Java avec Visual Studio Code
Écraser le téléchargement du fichier avec le même nom avec BOX SDK (java)
[Gradle] Construisez un projet Java avec une configuration différente de la convention