--- title: java decompile project --- ###### tags: `JAVA` # java decompile project 網上常推薦的JD_GUI無法自動生成.java檔,功能就跟idea打開看源碼一樣,相當沒屁用。 ## 嘗試了以下內容 ``` 对比了多款反编译工具,还是觉得idea自带的fernflower好用,相比较之下java-decompiler无法反编译lambda表达式,而这个fernflower可以,所以在有lambda表达式的情况下,还是选择fernflower比较好。 这里上一个单独使用fernflower的说明。 GitHub - fesh0r/fernflower: Unofficial mirror of FernFlower Java decompiler (All pulls should be submitted upstream) 下载 git clone https://github.com/fesh0r/fernflower.git cd fernflower 发现是gradle的,看下支持的命令 ./gradlew tasks 发现支持jar 进行编译 ./gradlew jar 或 gradle jar 编译成功后/build/libs目录下就会生成fernflower.jar 进行反编译 java -jar fernflower.jar ./xxx.jar ./source ./xxx.jar 是压缩的class文件zip包 ./source 是反编译java文件输出目录 注:输出到source目录中的还是一个jar包,但是这个包里放的都是.java源文件了,直接用unzip工具解压就行 ``` 實際上反解出來的內容,function內都是顯示compile failed 後來成功是依照以下 先找到idea安装目录的反编译工具jar,名称从fernflower改名为java-decompiler,其实还是相同工具,复制到其他目录,然後依照上面的方式反解成功 JDK version和class file version(Class编译版本号)对应关系 JDK 19 = 63, JDK 18 = 62, JDK 17 = 61, JDK 16 = 60, JDK 15 = 59, JDK 14 = 58, JDK 13 = 57, JDK 12 = 56, JDK 11 = 55, JDK 10 = 54, JDK 9 = 53, JDK 8 = 52, JDK 7 = 51, JDK 6.0 = 50, JDK 5.0 = 49, JDK 1.4 = 48, JDK 1.3 = 47, JDK 1.2 = 46, JDK 1.1 = 45.0-45.6