# jar2java **Repository Path**: lixingjie/jar2java ## Basic Information - **Project Name**: jar2java - **Description**: - 图形化 JAR 反编译器,支持多引擎,将 JAR 批量还原为标准 Java 项目结构 - 默认使用 CFR ,可切换 Vineflower 、 Procyon 、 JD-CLI - 一键脚本自动下载依赖、打包为 EXE 并启动 GUI - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-11 - **Last Updated**: 2025-10-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # jar2java-gui ## 项目简介 JAR → Java 项目反编译器(图形界面,多引擎)。默认使用 CFR,也可切换 Vineflower、Procyon、JD-CLI。支持一次选择多个 JAR,批量还原为标准的 `src/main/java` 项目结构,并在 `src/main/resources` 中保留所有非 `.class` 资源。 **工作流程概览** - 一键脚本:运行 `setup_build_run.bat` 自动下载依赖到 `lib/`,打包为 `EXE` 并启动 GUI。 - 引擎检测:打包后自动在 `_internal\lib` 或同级 `lib\` 检测各引擎 JAR。 - 反编译输出:为每个 JAR 生成同名项目目录,源码与资源分别写入标准 Maven 结构。 **核心特性** - 多引擎:CFR(默认)、Vineflower、Procyon、JD-CLI - 批量反编译:选择多个 JAR,一次性处理 - 资源提取:保留 ZIP 目录结构到 `src/main/resources` - 一键脚本:自动下载依赖、打包并启动 GUI - 可移植:打包后的 EXE 自带 `lib/` 引擎 JAR 数据,无需额外配置 **系统要求** - Windows(已在 Windows 10/11 上验证) - 已安装 Java(JRE/JDK,用于运行各反编译引擎)并配置到 `PATH` - Python 3(用于打包;脚本会自动安装 PyInstaller) ## 快速开始 - 双击或在终端运行:`setup_build_run.bat` - 一键脚本将自动完成: - 下载引擎 JAR 到项目根目录 `lib/`(CFR 必需;其他可选) - 使用 PyInstaller 打包为 `dist/jar2java-gui/jar2java-gui.exe` - 启动打包后的 GUI 应用并显示日志 可选:自定义应用名 - 在终端运行:`setup_build_run.bat MyAppName` ## 目录结构(示例) - `lib/`:打包前依赖引擎 JAR(脚本会自动创建与填充) - `dist/jar2java-gui/_internal/lib/`:打包后内置引擎 JAR 存放位置 - `dist/jar2java-gui/jar2java-gui.exe`:打包后的可执行文件 ``` ├── dist\ │ └── jar2java-gui\ │ ├── _internal\ │ │ └── lib\ (cfr.jar / vineflower.jar / procyon-decompiler.jar / jd-cli.jar) │ └── jar2java-gui.exe ├── lib\ (打包前下载到此) └── setup_build_run.bat ``` ## GUI 使用说明 - 启动后按提示操作: - 点击“选择 JAR 文件(支持多选)”添加一个或多个 JAR - 选择“输出目录”用于生成项目结构 - 选择反编译引擎(默认 CFR),可在“高级选项”中添加额外参数 - 点击“开始反编译”,查看底部日志与进度 - 输出结构(每个选定 JAR 会生成一个同名项目目录): - `src/main/java`:反编译后的 Java 源码(按包路径组织) - `src/main/resources`:所有非 `.class` 的资源,保留原 ZIP 路径(可选是否包含 `META-INF`) ## 引擎 JAR 的查找与打包策略 - 应用运行时会按以下顺序查找引擎 JAR: - `sys._MEIPASS\lib`(PyInstaller 运行时临时目录) - `\_internal\lib`(PyInstaller 打包时的静态数据) - `\lib`(若手动将 JAR 放在可执行文件同级) - `\lib`(源码运行) - 一键脚本会把项目根目录 `lib/` 整体打包到 EXE 的 `_internal/lib/`,确保打包后的应用无需额外配置即可检测到引擎。 - 文件名映射: - `CFR` → `cfr.jar` - `Vineflower` → `vineflower.jar` - `Procyon` → `procyon-decompiler.jar` - `JD-Core` → `jd-cli.jar` ## 高级选项(GUI 中的“高级选项”) - 可附加引擎参数,示例: - CFR:`--sugarbooleans true --sugarenums true --decodelambdas true --removeboilerplate true` - Vineflower:`-dgs=1 -rbr=1 -ren=1` - Procyon:`--log-level INFO --skip-resources false` - JD-CLI:`--decompile-inner true --displayLineNumbers true` ## 故障排除 - 下载失败: - 检查网络连接,脚本会优先使用 `curl`,并回退到 PowerShell `Invoke-WebRequest` 或 `certutil` - 手动下载对应 JAR 到 `lib/`: - CFR(必需):`https://repo1.maven.org/maven2/org/benf/cfr/0.152/cfr-0.152.jar` → `lib\cfr.jar` - Vineflower:`https://repo1.maven.org/maven2/org/vineflower/vineflower/1.9.3/vineflower-1.9.3.jar` → `lib\vineflower.jar` - Procyon:`https://github.com/mstrobel/procyon/releases/download/v0.6.0/procyon-decompiler-0.6.0.jar` → `lib\procyon-decompiler.jar` - JD-CLI:`https://repo1.maven.org/maven2/org/jd/jd-cli/1.2.0/jd-cli-1.2.0.jar` → `lib\jd-cli.jar` - Java 未配置: - GUI 顶部会显示“Java: 不可用”,请安装 JDK/JRE 并加入 `PATH` - 打包失败: - 脚本已添加 `--noconfirm` 避免交互阻塞;请查看控制台日志与 `build\jar2java-gui\warn-jar2java-gui.txt` - 运行后显示“未找到引擎 JAR”: - 确认 `dist\jar2java-gui\_internal\lib` 下存在对应 JAR - 或将 JAR 放到 EXE 同级目录 `lib\` 后重新运行 ## 备注 - 默认强制确保 `lib\cfr.jar` 可用;其他引擎为可选。 - 如需固定或升级引擎版本,可在 `setup_build_run.bat` 中修改下载 URL。