---
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