Skip to content

Repository files navigation

JarEditor Web

Desktop Download

Windows x64 portable build. Download and double-click to run; installation is not required.

License

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、.class CFR 反编译源码
  • 搜索路径和文本资源内容
  • 编辑资源文件并保存到 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 和 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 -v

裸机部署

Ubuntu/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 的所有元数据

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages