JAR 文件差异分析自动化工具
一个功能全面的 JAR 文件差异分析自动化工具,通过 WinMerge 比较两个 JAR 文件,解析差异报告,提取差异文件,反编译 .class 文件为可读的源代码,并生成批量比较任务和 Excel 报告,形成完整的 JAR 文件差异分析工作流程。
![]() |
![]() |
![]() |
- 在发布地址下载并解压打包好的免安装压缩包
- 双击
.exe文件
此目录结构是通过 PyInstaller 打包工具生成的单目录可执行程序,包含了运行 DiffAutoMator 所需的所有依赖文件和库。用户只需运行 DiffAutoMator.exe 即可启动应用程序,无需安装 Python 或其他依赖项。
DiffAutoMator/
├── _internal # 内部库文件
├── excel_files/ # excle输出文件
├── ExtractedDiffs/ # 提取的Jar文件
├── merge_files/ # 比较文件
├── png_cache/ # 截图缓存文件
└── DiffAutoMator.exe # 主程序可执行文件
- WinMerge 对比: 使用 WinMerge 生成两个 JAR 文件的 HTML 差异报告
- HTML 报告解析: 解析 HTML 报告,提取差异文件信息
- 路径生成: 从解析结果中生成差异文件的相对路径列表
- JAR 文件提取: 根据路径列表从两个 JAR 文件中提取指定文件
- 反编译: 将
.class文件反编译为 Java 源代码 - 批量比较: 生成并执行批量文件比较任务
- Excel 报告生成: 生成包含差异截图的 Excel 报告
- 自动化处理: 自动检测并处理相关 JAR 文件的比较
- 现代化 GUI: 提供现代化的图形用户界面操作方式
- 多轮比较: 支持在一次运行中完成多轮 JAR 文件比较
- 新工作表功能: 可在现有 Excel 报告中添加新的比较工作表
- 便携版本构建: 提供打包脚本创建可执行版本
- 智能截图处理: 使用 Playwright 进行智能截图,优化图片并去除白边
- 清理: 可选择清理临时文件
- Python 3.7+
- WinMerge (用于文件比较) - 下载地址
- CFR (用于反编译)
- PyQt5 (用于图形界面)
- BeautifulSoup4 (用于 HTML 解析)
- Pillow (用于图像处理)
- OpenPyXL (用于 Excel 生成)
- Playwright (用于截图)
- PyInstaller (用于打包可执行文件)
- 确保已安装 Python 3.14+
- 安装 WinMerge 并将其路径设置在
constants.py中 - 确保系统中已安装 Java 环境
pip install PyQt5 beautifulsoup4 pillow openpyxl playwright PyInstallerplaywright install chromium-
运行主程序:
python diff_auto_mator/main.py
-
按提示输入两个 JAR 文件的路径(左侧为旧版本,右侧为新版本)
-
系统将自动执行完整的差异分析工作流程,包括后续相关 JAR 文件的自动检测和比较
-
运行 GUI 程序:
python diff_auto_mator/gui_main.py
-
在图形化界面中选择JAR文件并执行比较
-
使用标签界面进行系统设置和查看运行日志
diff_auto_mator/
├── main.py # 主工作流程
├── gui_main.py # 现代化图形界面
├── constants.py # 常量定义
├── winmerge_to_html.py # WinMerge 对比
├── analysis_eport.py # HTML 报告解析
├── relative_path.py # 路径生成
├── extract_jar_files.py # JAR 提取和反编译
├── batch_comparison.py # 批量比较
├── generate_excel.py # Excel报告生成
├── cleanup_files.py # 文件清理
├── build_portable.py # 打包可执行版本
├── extract_shell.py # PowerShell脚本集成(备用)
├── ExtractedDiffs/ # 提取的 JAR 文件输出目录
├── excel_files/ # Excel 报告输出目录
├── merge_files/ # 比较报告输出目录
├── png_cache/ # PNG 缓存目录
├── test_demo/ # 测试演示文件
├── tools/ # 工具目录(包含 CFR 反编译器等)
│ ├── cfr-0.152.jar # Java反编译器
│ ├── diy_font.ttf # 自定义字体文件
│ ├── icon.png # 应用程序图标
│ ├── favicon.ico # 网站图标
│ ├── ExtractJarFiles_final.ps1 # PowerShell脚本
│ ├── chromium-1200/ # Chromium浏览器
│ ├── chromium_headless_shell-1200/ # Chromium无头浏览器
│ ├── ffmpeg-1011/ # FFmpeg工具
│ └── winldd-1007/ # Windows依赖检查工具
└── build/ # 构建输出目录
constants.py 文件中的主要配置项:
DEFAULT_OUTPUT_DIR: 默认输出目录./ExtractedDiffsDEFAULT_DECOMPILER_PATH: 默认反编译器路径./tools/cfr-0.152.jarWINMERGE_PATH: WinMerge 可执行文件路径TARGET_DIR: 目标目录./merge_filesEXCEL_DIR: Excel 输出目录./excel_filesPNG_CACHE_DIR: PNG 缓存目录./png_cacheGLOBAL_FONT: Excel报告使用的全局字体MAX_HEIGHT_LIMIT: Excel图片高度限制(25000px)
- 用户输入两个 JAR 文件路径
- 使用 WinMerge 生成 HTML 差异报告
- 解析 HTML 报告,提取差异文件信息
- 生成差异文件的相对路径列表
- 根据路径列表提取 JAR 文件并反编译
.class文件 - 读取文件列表执行批量比较
- 生成 Excel 报告和截图
- (可选)清理临时文件
- 自动检测相关 JAR 文件并进行后续比较
- 在现有Excel报告中添加新的工作表
python build_portable.py

