Jar包反编译工具 fernflower

当需要处理无源代码的久远jar包,获取其java源码时需要反编译工具的支持。

本文介绍IDEA自带的工具 [java-decompiler].

以反编译 logback-core-1.1.11.jar 为例,jar包位于 ~/jd 目录。

该组件是 IDEA 采用的反编译工具,在IDEA打开class文件时,就是通过该组件的反编译能力。

[java-decompiler] 是IDEA中的插件名称,实际上来源于 [fernflower] 工具。

在Mac下,java-decompiler.jar 位于 /Applications/IntelliJ IDEA.app/Contents/plugins/java-decompiler/lib,执行以下命令:

1
2
cd /Applications/IntelliJ\ IDEA.app/Contents/plugins/java-decompiler/lib/;
java -cp java-decompiler.jar org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler ~/jd/logback-core-1.1.11.jar ~/jd/src/

命令格式为:java -jar java-decompiler.jar [-<option>=<value>]* [<source>]+ <destination>

  • source 表示jar包所在目录,可以填写单个jar包,也可以填写一个目录(将解压目录下所有jar包)
  • destination 表示反编译的java源码生成目录
    执行命令后,将在 ~/jd/src 下生成 logback-core-1.1.11.jar 文件,这个jar包就是源文件,解压该jar包即可。
    1
    unzip ~/jd/src/logback-core-1.1.11.jar;
    反编译后效果如下,格式非常友好。

java-decompiler

fernflower