基于 dgileadi/vscode-java-decompiler 的社区维护分支,持续更新以支持现代 Java 版本。
为 Language Support for Java™ by Red Hat 扩展添加反编译能力,支持 CFR、Vineflower、Procyon 三种反编译引擎。
- 对无源码的 Java 类文件
Ctrl/Cmd + Click或Go to Definition即可查看反编译代码 - 支持 JDK 6 ~ 21+ class 文件反编译
- 三引擎可选:CFR(现代)、Vineflower(推荐,Fernflower 继任者)、Procyon(遗留)
- Unicode 字符默认直接显示(不转义为
\uXXXX) - 支持各引擎的细粒度配置选项
| 引擎 | 版本 | 状态 | 说明 |
|---|---|---|---|
| Vineflower | 1.12.0 | ✅ 推荐 | Fernflower 社区继任者,支持 Java 21+ 新特性 |
| CFR | 0.152 | ✅ 活跃 | 现代 Java 反编译器,广泛使用 |
| Procyon | 0.6.0 | 2019 年起未更新,不支持现代 Java 特性 |
⚡ v0.0.5 更新:Fernflower 已替换为 Vineflower,旧配置自动兼容无需修改。
- VS Code
^1.129.1 - Language Support for Java™ by Red Hat v1.55.0+
- 安装 Red Hat Java 扩展
- 安装本扩展
- 打开任何使用了无源码 JAR 的 Java 项目
Ctrl/Cmd + Click类名即可查看反编译代码
{
"java.contentProvider.preferred": "vineflower"
}可选值:vineflower、cfr、procyon(为兼容旧配置,fernflower 也自动映射为 vineflower)
{
"java.decompiler.vineflower": {
"din": true,
"asc": false
},
"java.decompiler.cfr": {
"hideutf": false,
"innerclasses": true
},
"java.decompiler.procyon": {
"unicodeOutputEnabled": true
}
}完整配置项请参考 VS Code 设置面板的自动补全。
java-decompiler/
├── vscode-java-decompiler/ # VS Code 扩展(前端)
│ ├── package.json # 扩展清单 & 配置项
│ └── server/ # 后端 JAR 包
│ ├── dg.jdt.ls.decompiler.common-0.0.5.jar
│ ├── dg.jdt.ls.decompiler.cfr-0.0.5.jar
│ ├── dg.jdt.ls.decompiler.vineflower-0.0.5.jar
│ └── dg.jdt.ls.decompiler.procyon-0.0.5.jar
│
└── dg.jdt.ls.decompiler/ # Java 后端(Eclipse 插件)
├── dg.jdt.ls.decompiler.common/ # 公共缓存基类
├── dg.jdt.ls.decompiler.cfr/ # CFR 引擎适配
├── dg.jdt.ls.decompiler.vineflower/ # Vineflower 引擎适配
└── dg.jdt.ls.decompiler.procyon/ # Procyon 引擎适配
flowchart LR
A["VS Code<br/>Ctrl+Click 类名"] --> B["Red Hat Java LS<br/>请求反编译"]
B --> C["dg.jdt.ls.decompiler<br/>Eclipse 插件"]
C --> D1["CFR<br/>Vineflower<br/>Procyon"]
D1 --> E["返回源码文本"]
E --> F["VS Code 显示"]
后端是 Eclipse PDE 插件,通过 Tycho + Maven 构建,被 JDT Language Server 以 OSGi Bundle 形式加载。
- JDK 21+
- Maven 3.6+
- Git
cd dg.jdt.ls.decompiler
mvn clean install -DskipTestscd vscode-java-decompiler
npx vsce package产出 java-decompiler-x.x.x.vsix,可直接安装或发布。
| 类别 | 变更 |
|---|---|
| 🚀 引擎升级 | Fernflower →Vineflower 1.12.0(支持 Java 21+) |
| 📐 平台升级 | JavaSE-11 →JavaSE-21,Eclipse Target → 2024-03 |
| 🔧 构建升级 | Tycho 2.5.0 →5.0.3,LSP4J 0.11 → 0.23 |
| 🌐 Unicode | 三引擎默认不转义 Unicode 字符 |
| 🔄 兼容性 | fernflower 配置键和 ID 自动映射到 Vineflower |
| 📦 大小优化 | 精简 Target Platform,包体减小 |
- David Gileadi — 原作者
- CFR — Lee Benfield
- Vineflower — 社区维护的 Fernflower 继任者
- Procyon — Mike Strobel
- Eclipse JDT LS — Red Hat