背景
我们知道java源代码文件的扩展名是.java,是程序员可以读懂的,经过编译后形成字节码,文件扩展名为.class,这个文件的内容是机器(Java虚拟机)可以识别的。但有时候,我们的源代码(.java)丢失或版本恩不一致,能不能通过发布后的class文件把java源代码找回来呢。答案是肯定的,前提是你的代码没有经过混淆。下面就介绍一下业界非常出名的java反编译工具jd-gui的下载与使用。
正文
1、打开浏览器输入下载地址:
https://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/JD-GUI.shtml
2、点击上图中的"DOWNLOAD NOW",出现下图:
在这里插入图片描述
3、下载
在上图中选中一个下载镜像地址,此处我选择的是红框中的下载地址。这是会弹出保存文件位置对话框,你选择一个合适的位置保存,等待下载完成就可以了。下载完毕进行解压缩,如下图:
4、运行
当前版本是1.6.6,运行jd-gui.exe,选择菜单File->Open File,找到要反编译的class文件,就会把class文件对应的java代码显示出来,如下图:
总结
Java反编译工具主要用于将已经编译成.class文件或.jar文件的Java字节码还原成人类可读的Java源代码。这里为您介绍几个知名的Java反编译工具:
JD-GUI(Java Decompiler Graphical User Interface) JD-GUI是一个免费的图形化Java反编译工具,它可以动态地打开.class文件或.jar文件并直接显示反编译后的Java源代码。用户还可以将反编译得到的代码保存为.java文件。
Procyon Procyon是另一种高效的Java反编译器,它能精确地将Java字节码转换回Java源代码,同时也支持反编译其他JVM语言(如Kotlin和Scala)编译后的字节码。
JAD (Java Decompiler) JAD曾是非常流行的Java反编译器,尤其适用于早期版本的Java字节码,尽管对较新版本的Java支持可能不足,但在某些场景下仍然可用。
Fernflower Fernflower是IntelliJ IDEA集成开发环境内置的Java反编译器,也可独立使用,具有较好的反编译效果。
CFR (Cafeine Fuelled Ramblings) CFR是一个开源Java反编译器,能够有效地将Java字节码转译为源代码。
Bytecode Viewer Bytecode Viewer是一款多功能的Java反编译工具,它不仅能反编译字节码,还提供了查看字节码、分析类结构等多种功能。
Jadclipse Jadclipse是一个Eclipse插件,结合JAD反编译器,可以在Eclipse IDE中直接查看和编辑反编译后的Java源代码。
在使用这些反编译工具时,请确保遵循适用法律和版权规定,未经许可的反编译可能涉及侵权风险。在合法的情况下,它们可以帮助开发者进行逆向工程、故障排查、学习已有代码结构等目的。