JD-GUI反编译jar包为Java源代码

程序员难免要借鉴其他java工程的代码。可有时只能拿到.calss文件,jar包或者war包,这个时候要求程序员能熟练的将这些类型文件反编译为Java代码并形成可编译运行的项目。本文介绍的反编译工具是JD-GUI反编译jar包是一个springboot项目的jar包。

反编译工T ^ f p d ( | [ y具使用

下载JD-GUI后解压,无需安装,双击打开exe文件@ G A = i K

open file选择要反编译的jar包,
JD-GUI反编译jar包为Java源代码
打开,左侧classes->com目录下就是java源代码文件

点击想查看的; j R v ]文件,可以看到源代码,点Z Y e & % h L击有下划线的{ s b M c B Y变量符号,会自动跳转到定义处,也可以搜索变量名,但是搜索时会比较慢,需要多等一会。

获得源代码

这样只能查看代码,要编译,修改,运行代码,就要把所有代码提取出,形成工程项目。点击File->save all source
JD-GUI反编译jar包为Java源代码
源代码会保存为压缩包

压缩包解压是三个文件夹
JD-GUI反编译jar包为Java源代码
javaS ] - k 9 4代码都在BOOT-INF/calsses/com里

将classes目录里的所有东西一起拷贝到建立好的空的springboL g 8ot项目中编译运T I L Y Q行,目录层次要拷贝正确。

获得项目配置文件

项目配置文件application.properG + z d w : 4ties和pom.xm里Z 3 a v 4 的内容复制反编译解2 ; ]压目录同名文件里的内容粘贴进来。

获得项目依赖的jar包

现在项目代码有了,配N A i 5 H置文件也有4 7 n t y p m O,但是一般还不能成功运行项目。因为反编译的pom不H I 2 e c @ b ^ l是特别准确,可能很- / / d B c多项目需要的包,pom里没有import。或者原项目用的一些jar包本T ] 8 z d来就是手工导入项目,不是pom统一管理的。
最好的办法就是从被反编译的jar包里提取所有需要impoM J U ^rt的jar包。

将test01.jar后k o h c B缀名改成zip test01.zip,解压到当前文件夹。

解压后的BOOT-INF\lib里有本项目[ c `需要的全部jar包,将所有jarW I - ) = G d包通过add external jar的方式加到项目中。
JD-GUI反编译jar包为Java源代码

运行项目

到这里距离成功运行项目很近了,因为反编译的代码也不是特别: F R B精确,有些代码需要人工分析修改,或者修改不成功只能注释掉,才能通过编译。运行时有些包可能报错,主要是pom引入的包7 & P和手工导入的包冲突,或者有些包版本不对,也需要逐一解决。当然,有些反编译项目直接正确运行不报错误,这样当然最好了。