Jad(JAva Decompiler)是一个Java的反编译器,可以通过命令行把Java的class文件反编译成源代码
。
一、下载文件
下载地址:https://varaneckas.com/jad/

二、配置环境变量
下载好后可以放到JDK安装环境,当然这个可以随意。

配置环境变量:
配置环境变量的目的主要是让 Jad的命令 可以在电脑 任意文件位置 都能运行。
找到环境变量-》系统变量-》Path-》添加JAD路径

三、测试
打开cmd窗口,输入jad出现下面的代表安装成功。

四、使用示例
正常java项目在经过编译后会将.java文件编译成.class文件。而.class文件通过Jad反编译,可以编译成源码。.class文件一般存放于项目的target文件夹当中。
以这个class为例:

执行 jad 类名
命令
MultIdGeneratorEnum.jad就是编译后的jad源码。

这个是我的java文件。

这个是项目最终运行的源码。可以看到,其实java当中的Enum枚举,其实他也是一个类,只不过Java经过了处理,但是最终运行的时候,他会将Enum类换成普通的类。枚举的存在主要是让我们程序员编写代码更方便,可以省略很多代码。这也就是有时候在开发当中,经常会提倡使用枚举。

五、使用命令
[1] 反编译一个class文件:jad example.class
,会生成example.jad
,用文本编辑器打开就是java源代码
[2] 指定生成源代码的后缀名:jad -sjava example.class
,生成example.java
[3] 改变生成的源代码的名称,可以先使用-p将反编译后的源代码输出到控制台窗口,然后使用重定向,输出到文件:jad -p example.class > myexample.java
[4] 把源代码文件输出到指定的目录:jad -dnewdir -sjava example.class
,在newdir
目录下生成example.java
[5] 把packages目录下的class文件全部反编译:jad -sjava packages/*.class
[6] 把packages目录以及子目录下的文件全部反编译:jad -sjava packages/**/*.class
,不过你仍然会发现所有的源代码文件被放到了同一个文件中,没有按照class文件的包路径建立起路径
[7] 把packages目录以及子目录下的文件全部反编译并建立和java包一致的文件夹路径,可以使用-r命令:jad -r -sjava packages/**/*.class
[8] 当重复使用命令反编译时,Jad会提示“whether you want to overwrite it or not”,使用-o可以强制覆盖旧文件
[9] 还有其他的参数可以设置生成的源代码的格式,可以输入jad命令查看帮助,这里有个人做了简单的翻译:jad命令总结
[10] 当然,你会发现有些源文件头部有些注释信息,不用找了,jad没有参数可以去掉它,用别的办法吧。
最后,jad不能直接反编译jar包,直接解压了再反编译吧(这个方法很显然,我实在不好意思写出来)。