杰瑞科技汇

如何在Eclipse中反编译Java代码?

下面我将为你详细介绍几种在 Eclipse 中实现 Java 反编译的方法,从最推荐到备选方案。

如何在Eclipse中反编译Java代码?-图1
(图片来源网络,侵删)

使用 JAD 插件 (最经典、最推荐)

JAD (Java Decompiler) 是一个历史悠久、非常强大的反编译器,虽然它已经很久没有更新了,但对于绝大多数 Java 代码(包括 Java 8 之前的代码)反编译效果依然出色。

第一步:下载 JAD

  1. 访问 JAD 的官方下载页面(或可靠的镜像站点)。
    • 官方原始下载页面http://www.varaneckas.com/jad/
    • 在该页面找到 jad.exe (Windows) 或 jad (Linux/Mac) 的下载链接,通常还会提供一个 jad.zip 文件,里面包含了配置文件。
  2. 下载 jad.exejad.zip

第二步:安装 Eclipse 插件 (Eclipse Marketplace)

这是最简单、最标准的安装方式。

  1. 打开你的 Eclipse IDE。
  2. 点击顶部菜单栏的 Help -> Eclipse Marketplace...
  3. 在搜索框中输入 "JAD""JADclipse" (JADclipse 是最流行的 JAD 插件)。
  4. 在搜索结果中找到 "JADClipse" 插件,点击 Install 按钮。
  5. 按照提示完成安装过程,同意许可协议,并等待安装完成,安装后,Eclipse 会提示你重启。

第三步:配置 JADClipse 插件

  1. 重启 Eclipse 后,进入菜单 Window -> Preferences
  2. 在左侧导航树中找到 JADClipse -> Path
  3. 在右侧的 Path to decompiler 文本框中,点击 Browse... 按钮,然后选择你刚刚下载的 jad.exe 文件的完整路径。
    • 示例C:\tools\jad\jad.exe
  4. (可选)在 JAD options 中,可以添加一些命令行参数,一个常用的参数是 -nonlb,它可以防止反编译后的代码出现过多的空行,使格式更紧凑。
  5. 点击 Apply and Close 保存配置。

第四步:使用 JADClipse

你可以直接在 Eclipse 中查看任何 .class 文件的源代码了!

  • 查看 JAR 包中的类
    1. 在 Package Explorer 中,展开一个 JAR 文件(rt.jar)。
    2. 找到一个 .class 文件,双击它。
    3. 如果该类没有源码(.java 文件),Eclipse 会自动调用 JADClipse 反编译并显示其内容。
  • 查看项目中的 .class 文件
    1. 在你的 Java 项目中,右键点击一个 .class 文件。
    2. 选择 Open With -> JADClipse Decompiler

使用 Fernflower 插件 (现代、官方推荐)

Fernflower 是 JetBrains 开发的反编译器,并且是 IntelliJ IDEA 的内置反编译器,它对较新的 Java 特性(如 Java 8+ 的 Lambda 表达式、Stream API 等)支持更好,反编译代码的可读性通常也更高。

如何在Eclipse中反编译Java代码?-图2
(图片来源网络,侵删)

第一步:下载 Fernflower

  1. 访问 JetBrains 的官方 GitHub 仓库。
  2. Fernflower 是作为 IntelliJ IDEA 的一部分发布的,你可以从 IDEA 的发布页面找到它。
  3. 在该目录下,你会找到一个名为 fernflower.jar 的文件,下载它。

第二步:安装 Fernflower 插件

最简单的方式是使用一个通用的反编译插件,然后手动配置 Fernflower。

  1. 同样,通过 Help -> Eclipse Marketplace 安装一个支持 Fernflower 的插件,一个不错的选择是 "Java Decompiler Plugin"
  2. 安装并重启 Eclipse。

第三步:配置 Fernflower

  1. 进入菜单 Window -> Preferences
  2. 找到 Java DecompilerJava -> Decompiler 的配置项。
  3. 在配置界面,你需要设置 DecompilerFernflower
  4. Fernflower homePath to fernflower.jar 文本框中,点击 Browse...,选择你刚刚下载的 fernflower.jar 文件的完整路径。
  5. 点击 Apply and Close 保存配置。

配置完成后,使用方法与 JADClipse 完全相同,双击 .class 文件即可。


使用 JD-Eclipse 插件 (备选方案)

JD-Eclipse 是 JD-Core (Java Decompiler) 的 Eclipse 插件,JD-Core 是 JD-GUI 使用的核心引擎,也是一个非常流行的反编译器。

安装步骤

  1. 通过 Help -> Eclipse Marketplace 搜索 "JD-Eclipse"
  2. 找到插件并点击 Install,完成安装和重启。
  3. 配置(通常可选):进入 Window -> Preferences -> General -> Editors -> File Associations
  4. 在 "File types" 列表中,选择 *.class
  5. 在 "Associated editors" 列表中,确保 "Class File Viewer (JD-Eclipse)" 被选中并设为默认。

总结与对比

特性 JADClipse (JAD) Fernflower JD-Eclipse (JD-Core)
反编译引擎 JAD Fernflower (JetBrains) JD-Core
代码可读性 良好,但格式可能略显老旧 优秀,格式现代,对 Java 8+ 支持好 良好,与 JD-GUI 体验一致
Java 版本支持 对旧版 Java (Java 8及之前) 非常好 对新版 Java (Java 8, 11, 17等) 支持更好 支持较好,持续更新
插件成熟度 非常成熟,稳定 现代,在 IntelliJ IDEA 中是标准 成熟,稳定
推荐场景 - 处理遗留项目或旧版库
- 追求极致的稳定性
- 处理现代 Java 项目
- 希望获得最可读的反编译代码
- 喜欢使用 JD-GUI 的用户
- 需要与 JD-GUI 保持一致的体验

常见问题与解决方法 (FAQ)

Q: 为什么我反编译后看到的代码还是一堆乱码(// Decompiled with Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.)? A: 这说明 Eclipse 没有正确调用反编译器,请检查以下几点:

如何在Eclipse中反编译Java代码?-图3
(图片来源网络,侵删)
  1. 插件是否安装成功:在 Help -> About Eclipse -> Installation Details 中查看插件列表。
  2. 路径是否配置正确:确保 jad.exefernflower.jar 的路径是绝对且正确的。
  3. Eclipse 版本兼容性:确保你下载的插件版本与你的 Eclipse 版本兼容,Marketplace 通常会自动处理这个问题。

Q: 我只想反编译一个 JAR 文件里的所有代码,怎么办? A: 你可以使用独立的反编译工具,JD-GUI (图形界面) 或 cfr (命令行)。

  1. JD-GUI:直接从 JD-GTI 官网 下载,然后打开你的 JAR 文件即可。
  2. 命令行工具 (如 CFR)
    • 下载 CFR 的 JAR 包。
    • 在命令行中运行:java -jar cfr.jar your_library.jar --outputdir output_folder
    • 这会将 your_library.jar 中所有类的反编译代码输出到 output_folder 中。

希望这份详细的指南能帮助你在 Eclipse 中顺利地进行 Java 反编译!对于绝大多数用户,我 强烈推荐从 JADClipse 开始,因为它简单、稳定且效果良好,如果你在处理新项目时遇到反编译效果不佳的问题,再尝试切换到 Fernflower。

分享:
扫描分享到社交APP
上一篇
下一篇