Java Decompiler 프로젝트의 JD-GUI에서 JAR 파일에서 소스 코드 생성

7888 단어 decompilerJava

개요

  • Java Decompiler 프로젝트의 JD-GUI에서 JAR 파일에서 소스 코드 생성
  • 이번 환경: macOS Catalina+Java11(AdoptOpenJDK11.0.6)
  • JD-GUI


    클래스 파일 또는 JAR 파일에서 Java 소스 코드를 생성하는 역컴파일러입니다.
    Java5 이후에 가져온 주석, 일반, 열거형 등도 지원합니다.
    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.

    다운로드 및 실행


    공식 홈페이지Java Decompilerjd-gui-1.6.6.jar를 다운로드합니다.
    $ wget https://github.com/java-decompiler/jd-gui/releases/download/v1.6.6/jd-gui-1.6.6.jar
    
    JD-GUI를 자바 명령으로 시작합니다.
    $ java -jar jd-gui-1.6.6.jar 
    

    jar 파일을 끌어내리면 자바의 원본 코드로 변환할 수 있습니다.

    메뉴에서 파일 생성 → 모든 원본 코드의 zip 파일을 저장할 수 있습니다.
    생성된 zip 파일을 확장해 보십시오.
    $ 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             
    
    생성된 원본 코드에jar 파일이 있는 경로 등을 주석으로 삽입했습니다.
    $ 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
     */
    

    참고 자료

  • Java Decompiler
  • Java Decompiler · GitHub
  • 좋은 웹페이지 즐겨찾기