Windows x64 portable build. Download and double-click to run; installation is not required.
- Download JarEditor.exe
- Release notes
- SHA-256:
93BBE9C64A2A37B75EA2779C9F09C799B16C36C3F9D4308626D0B618FA417DBB
This project is released under the MIT License.
Web 版 JarEditor,多人在线上传、浏览、反编译、搜索、编辑和重新打包 jar/war/ear/zip/aar。当前版本优先打通核心闭环,已内置 JarEditor 插件包中的 CFR/Procyon/Jadx/Javassist 等依赖,并通过服务端 worker 调用 CFR 反编译 .class。
- 用户注册、登录、会话隔离
- 上传 jar/war/ear/zip/aar
- 浏览普通包、SpringBoot fat jar、嵌套 jar 内容
- 查看文本资源、二进制 base64、
.classCFR 反编译源码 - 搜索路径和文本资源内容
- 编辑资源文件并保存到 overlay
- 为每个主包上传依赖库,Java 回编译时自动加入 classpath
- Java 源码编译为
.class并写回 overlay - 构建新包并下载
- Docker 部署,镜像内含 Node.js、JDK、Maven、Gradle
要求:
- Node.js 20.19+ 或 22.12+
- npm 10+
- JDK 17 或 21
npm install
npm run check:env
npm run test -w api
npm run typecheck
npm run dev开发地址:
服务器安装 Docker 和 Docker Compose 后:
git clone <your-repo-url> jar-editor-web
cd jar-editor-web修改 docker-compose.yml 里的 SESSION_SECRET,换成足够长的随机字符串:
SESSION_SECRET: your-long-random-secret如果直接用 http://服务器IP:8080 访问,保持:
COOKIE_SECURE: "false"只有在 Nginx/Caddy 配好 HTTPS 反代后,才改成 COOKIE_SECURE: "true"。
构建并启动:
docker compose up -d --build访问:
http://服务器IP:8080
查看日志:
docker compose logs -f jar-editor-web升级:
git pull
docker compose down
docker compose build --no-cache
docker compose up -d数据保存在 Docker volume jar_editor_storage 中。删除容器不会删除上传和构建记录;如果要清空数据:
docker compose down -vUbuntu/Debian 示例:
sudo apt update
sudo apt install -y curl git openjdk-17-jdk maven gradle unzip
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs部署:
git clone <your-repo-url> /opt/jar-editor-web
cd /opt/jar-editor-web
npm install
npm run build
cp .env.example .env编辑 .env:
NODE_ENV=production
PORT=8080
DATA_DIR=/opt/jar-editor-web/storage
WEB_DIST=/opt/jar-editor-web/web/dist
SESSION_SECRET=your-long-random-secret
JAVA_BIN=java
JAVAC_BIN=javac
CFR_JAR=/opt/jar-editor-web/worker-jvm/vendor/cfr-0.152.jar启动:
npm run start -w api建议用 systemd 托管:
[Unit]
Description=JarEditor Web
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/jar-editor-web
EnvironmentFile=/opt/jar-editor-web/.env
ExecStart=/usr/bin/node /opt/jar-editor-web/api/dist/server.js
Restart=always
RestartSec=5
User=www-data
Group=www-data
[Install]
WantedBy=multi-user.target保存为 /etc/systemd/system/jar-editor-web.service 后:
sudo systemctl daemon-reload
sudo systemctl enable --now jar-editor-web
sudo systemctl status jar-editor-web- 必须改
SESSION_SECRET - 用 Nginx/Caddy 配 HTTPS 反代到
127.0.0.1:8080 - 直接用 HTTP 访问时不要开启
COOKIE_SECURE;否则登录 Cookie 不会被浏览器发回服务端,接口会出现 401 - 上传未知 jar 有风险,生产环境建议继续加容器级任务沙箱和上传配额
MAX_UPLOAD_MB默认 512,按服务器磁盘和内存调整- 当前持久化是文件型 JSON + 文件存储,适合单机部署;多人高并发后建议迁移 SQLite/PostgreSQL
- 本地 Node 18 可能仍能构建,但 Vite 会提示版本不足;服务器请使用 Node 20.19+。
- Procyon/Jadx 依赖已打包,但 API 当前默认 CFR,UI 选择其它反编译器时会回退到 CFR
- Kotlin 编译、完整 Javassist 图形化工具、VisualClassBytes 高级编辑还需要后续扩展
- 目前重打包会保留内容结构,但不保证完全保留原 zip entry 的所有元数据