工具
Fernflower Java 反编译器
JetBrains 的分析型反编译器,可将 Java class 文件还原为 Java 源码;IntelliJ IDEA 内置了它,用于在调试或浏览 class 文件时显示代码。独立的控制台反编译器接受 class 文件、JAR、ZIP 或目录,可通过 -e 加载仅作为分析上下文的库文件,并将 Java 源码写入输出目录。选项涵盖泛型签名、lambda、内部类、记录模式与 switch 模式、单个方法的处理时限,以及对含糊或混淆标识符的重命名,也可由使用者提供的重命名类来实现。
使用条件与局限
- GitHub 上没有发布版本:README 称版本发布在 IntelliJ 仓库中,审阅时其 java-decompiler-engine 元数据列出的最新版本为 262.10968.63。README 称 Fernflower 属于 IntelliJ Community 项目,补丁需以拉取请求提交到该项目,问题则提交到 JetBrains YouTrack(子系统 Java. Decompiler. Engine)。
- 所审阅 master 分支提交中的 Gradle 构建(wrapper 9.1.0)以 Java 21 为编译目标,可生成 fernflower.jar,或通过 ./gradlew installDist 生成 fernflower 启动脚本;README 介绍了 java -jar fernflower.jar 命令行用法。
- 输入由使用者提供:class、JAR 或 ZIP 文件;通过 -e 传入的库文件用于分析类与方法之间的关系,但不会被反编译。README 称多数选项面向专业逆向工程人员。输出是重建的 Java 代码,并非原始源码。
- 采用 Apache-2.0 许可,附 JetBrains 的 NOTICE。README 称 Stiver 为原作者,JetBrains 自 2014 年起负责维护,并合并了部分 ForgeFlower 补丁;Vineflower 是另行维护的分支。本次未反编译任何类。
关于此条目
- 类型
- 工具
- 类别
- JVM 字节码工具
- 关联
- 基础工具
- 目标
- 应用
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · JetBrains/fernflower · 修订 924b60f
- README.md#L48-L92 GitHub · JetBrains/fernflower · 修订 924b60f
- build.gradle.kts GitHub · JetBrains/fernflower · 修订 924b60f
- LICENSE.txt GitHub · JetBrains/fernflower · 修订 924b60f
- NOTICE.txt GitHub · JetBrains/fernflower · 修订 924b60f
- https://www.jetbrains.com/intellij-repository/releases/com/jetbrains/intellij/java/java-decompiler-engine/maven-metadata.xml