一个基于Web的Jar包反编译和差异对比工具(MVP版本)。
方式一:使用启动脚本(推荐)
Windows:
start.bat
Linux/Mac:
chmod +x start.sh
./start.sh
方式二:手动启动
git clone <repository-url>
cd mimir4j-diff
mvn clean package
java -jar target/mimir4j-diff-1.0.0-SNAPSHOT.jar
或使用Maven插件运行:
mvn spring-boot:run
打开浏览器访问: http://localhost:8080
上传Jar包
开始对比
查看结果
主要配置项位于 src/main/resources/application.properties:
# 服务端口 server.port=8080 # 文件上传限制 spring.servlet.multipart.max-file-size=100MB spring.servlet.multipart.max-request-size=200MB # 临时目录(在当前运行目录下创建) app.temp.dir=./temp # 反编译超时时间(毫秒) app.decompile.timeout=300000 # 最大class文件数量 app.max.class.files=5000
mimir4j-diff/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/mimir/diff/ │ │ │ ├── MimirDiffApplication.java # 启动类 │ │ │ ├── config/ │ │ │ │ └── WebConfig.java # Web配置 │ │ │ ├── controller/ │ │ │ │ └── DiffController.java # REST API │ │ │ ├── service/ │ │ │ │ ├── DecompileService.java # 反编译服务 │ │ │ │ └── DiffService.java # 对比服务 │ │ │ └── model/ │ │ │ ├── DiffResult.java # 结果模型 │ │ │ ├── DiffSummary.java # 统计信息 │ │ │ ├── FileDiff.java # 文件差异 │ │ │ ├── FileStatus.java # 文件状态 │ │ │ └── FileTreeNode.java # 文件树节点 │ │ └── resources/ │ │ ├── application.properties # 应用配置 │ │ └── static/ │ │ ├── index.html # 上传页面 │ │ ├── diff.html # 对比页面 │ │ └── js/ │ │ ├── upload.js # 上传逻辑 │ │ └── diff.js # 对比展示逻辑 ├── spec/ │ └── feature.md # 需求文档 ├── pom.xml # Maven配置 └── README.md # 本文件
上传两个Jar文件进行对比
请求参数:
jarA (File): Jar包AjarB (File): Jar包B响应示例:
{
"jarAName": "app-v1.0.jar",
"jarBName": "app-v2.0.jar",
"summary": {
"onlyInA": 3,
"onlyInB": 8,
"modified": 12
},
"fileTree": { ... },
"files": [
{
"path": "com/example/User.java",
"status": "modified",
"contentA": "...",
"contentB": "...",
"diff": "..."
}
]
}
Q: 反编译失败怎么办? A: 确保Jar包有效且包含标准Java class文件。某些混淆的代码可能无法完全反编译。
Q: 处理时间过长? A: 大型Jar包可能需要较长时间,请耐心等待。如果超过5分钟,请检查文件大小和复杂度。
Q: 浏览器兼容性? A: 推荐使用Chrome 90+、Firefox 88+或Safari 14+。
MIT License
欢迎提交Issue和Pull Request。