这是一款非常经典和流行的 Java 反编译工具,尤其适合快速查看 .class 文件或 JAR 包中的源代码。

什么是 JD-GUI?
JD-GUI 是一个图形化的反编译器,它能够直接将 Java 字节码(.class 文件)还原成可读的 Java 源代码(.java 文件),它支持多种 Java 版本的字节码,并且界面友好,操作简单,是开发者进行逆向分析、代码学习和调试的利器。
核心功能:
- 反编译:将
.class文件、.jar、.war、.zip等格式的字节码文件反编译成 Java 源代码。 - 实时预览:打开文件后,可以立即在窗口中看到反编译后的代码,无需保存文件。
- 代码导航:支持点击类名、方法名进行跳转,方便理解代码结构。
- 语法高亮:反编译的代码会进行语法高亮,提升可读性。
- 多窗口:可以同时打开多个文件或 JAR 包进行对比分析。
如何使用 JD-GUI?
使用 JD-GUI 非常简单,主要分为以下几步:
步骤 1:下载
访问 JD-GUI 的官方网站或 GitHub Releases 页面下载最新版本。

- 官方网站: https://www.jdgui.com/
- GitHub Releases: https://github.com/java-decompiler/jd-gui/releases
注意:JD-GUI 提供了适用于 Windows、macOS 和 Linux 的不同版本,请根据你的操作系统选择。
步骤 2:运行
下载完成后,解压压缩包,JD-GUI 是一个绿色软件,无需安装,直接双击运行 jd-gui.exe (Windows) 或 jd-gui (macOS/Linux) 即可。
步骤 3:打开文件
启动后,你会看到一个简洁的界面,主要有两种方式打开你想要反编译的文件:
-
拖拽 直接将你的
.class文件、.jar包或其他包含字节码的文件(如.zip)拖拽到 JD-GUI 的窗口中。
(图片来源网络,侵删) -
菜单栏 点击菜单栏的
File->Open...,然后在弹出的文件选择对话框中找到并打开你的文件。
步骤 4:查看和导航
文件打开后,左侧会显示文件/包的结构树,右侧则会显示反编译后的 Java 源代码。
常用操作:
- 代码阅读:直接阅读右侧的代码。
- 跳转定义:点击代码中的类名(如
String)、方法名或变量名,JD-GUI 能在当前打开的文件中找到其定义,它会自动跳转到对应的位置。 - 搜索:使用
Ctrl + F(或Cmd + F) 在当前文件中搜索文本。 - 打开新文件:可以继续打开另一个文件,JD-GUI 会以新的标签页形式展示。
JD-GUI 的优缺点
优点
- 简单易用:图形界面,零学习成本,上手即用。
- 速度快:对于大多数场景,反编译速度非常快,可以即时查看结果。
- 功能够用:提供了基本的代码导航和搜索功能,满足日常的代码分析需求。
- 免费开源:对个人和商业用户都是免费的。
- 跨平台:支持 Windows, macOS, Linux。
缺点
- 代码还原度有限:这是所有反编译工具的通病,反编译出的代码可能不完全等同于原始源码,
- 变量名和方法名会被替换成无意义的名称(如
a,b,c,method1)。 - 代码结构可能会被简化或改变,尤其是复杂的逻辑和匿名内部类。
- 注释、格式化信息会完全丢失。
- 变量名和方法名会被替换成无意义的名称(如
- 不支持所有 Java 特性:对于最新的 Java 特性(如某些 Lambda 表达式、模块系统等)支持可能不够完美。
- 无法处理混淆代码:如果原始代码经过了 ProGuard、Zelix KlassMaster 等工具混淆,JD-GUI 反编译出的代码将几乎无法阅读。
- 仅用于查看:它是一个查看器,不能直接编辑反编译后的代码并重新编译打包。
替代工具
虽然 JD-GUI 很好用,但在某些场景下,你可能需要考虑其他工具:
| 工具名称 | 类型 | 特点 | 适用场景 |
|---|---|---|---|
| JD-GUI | GUI | 简单快速,即时预览 | 快速查看单个或少量 .class/.jar 文件 |
| CFR (Class File Reader) | CLI / 插件 | 代码还原度高,现代,对 Java 8+ 特性支持好 | 追求高质量反编译结果,需要集成到 IDE(如 IntelliJ IDEA) |
| Procyon | CLI / 插件 | 代码质量高,支持 Java 8 Lambda 表达式 | 与 CFR 类似,用于高质量反编译 |
| Fernflower | CLI / IntelliJ IDEA 内置 | IntelliJ IDEA 默认的反编译器,质量稳定 | 作为 IDEA 内置工具,用于日常阅读第三方库源码 |
| Binary Ninja / Ghidra | 逆向工程平台 | 功能极其强大,但学习曲线陡峭,不局限于 Java | 深度逆向分析,包括恶意软件分析 |
推荐:
- 日常快速查看:JD-GUI 仍然是首选。
- 追求高质量代码还原:尝试 CFR,可以将其作为命令行工具使用,或者安装到你的 IDE 中。
- 在 IDEA 中查看:直接使用 IDEA 自带的 Fernflower 即可,无需额外安装。
注意事项与法律风险
- 版权和许可协议:请务必尊重知识产权! JD-GUI 只能用于分析你拥有合法使用权的代码,或者开源项目中允许你查看源码的部分。严禁使用 JD-GUI 来破解、逆向分析商业软件或闭源项目,这属于违法行为。
- 代码质量:永远不要将 JD-GUI 反编译出的代码直接用于生产环境,它的主要目的是学习和分析,而不是作为源码的替代品。
- 混淆代码:如果遇到混淆过的代码,JD-GUI 的作用会大打折扣,此时你可能需要专业的反混淆工具。
JD-GUI 是一款非常棒的入门级和快速分析型 Java 反编译工具,它以其简单、快速、直观的特点,成为了无数开发者的桌面必备工具,当你需要快速了解一个 .jar 包的结构,或者学习某个 .class 文件的实现逻辑时,JD-GUI 是一个绝佳的选择,但对于更复杂或更高质量的需求,了解并尝试 CFR 等替代工具会让你拥有更多选择。
