您的位置:首页 >修改JAR文件并重新打包的两种方式
发布于2026-04-28 阅读(0)
扫一扫,手机访问
本文介绍两种修改 JAR 包内文件(如配置文件或 Class 文件)后重新打包的方式:Ja va 命令方式 与 Ant 脚本方式。

核心警告
对于 Spring Boot 的可执行 JAR 包,重新打包时严禁使用压缩(必须使用存储模式),否则会导致 ClassNotFoundException 或启动失败。
这种方式最适合临时修改,或者手头没有构建工具的环境。操作直接,几步就能搞定。
第一步,就是把 JAR 包里的内容“掏”出来。打开终端,执行这条命令:
# -x: 解压, -f: 指定文件, -v: 显示过程(可选) jar -xf your-file.jar
执行后,当前目录下就会出现解压出来的所有文件和文件夹。
接下来,就是自由发挥的时间了。进入解压后的目录,找到你需要修改的文件。比如,要改配置文件,就编辑 BOOT-INF/classes/application.yml;要替换某个类,就找到对应的 .class 文件进行覆盖。
修改完成,重新打包。这里有个关键点,敲黑板了:
# 注意:必须包含 -0 参数(存储模式,不压缩) jar -cvfm0 new-package.jar META-INF/MANIFEST.MF ./
这几个参数是这么回事:
-c: 创建新的归档文件。-v: 生成详细输出,让你看到打包过程。-f: 指定最终生成的归档文件名。-m: 包含清单文件 META-INF/MANIFEST.MF,这能保留原 JAR 的 Main-Class 等关键配置。-0: 存储模式(不压缩)。这是 Spring Boot 嵌套 JAR 结构能正常工作的生命线,绝对不能省。如果你需要频繁修改,或者项目还在用老旧的构建流程,那么写一个 Ant 脚本来自动化整个过程会更高效。
下面是一个可以直接拿来用的 build.xml 示例,注释写得很清楚了:
Spring Boot JAR 包热修复/修改工具
使用起来就两步,非常清晰:
# 第一步:解压 (依赖 init 和 unjar) ant unjar # [手动操作] 此时进入 unpacked_classes 目录修改文件 # 第二步:重新打包 ant package
方法学会了,但想一次成功不踩坑,还得注意下面这些细节。经验表明,很多启动失败的问题,根源都在这里。
| 关注点 | 说明 |
|---|---|
| 压缩级别 | Spring Boot 的 BOOT-INF/lib 下的依赖包必须保持 STORED(不压缩)状态,否则类加载器无法正确读取。 |
| 目录结构 | 严禁改变 META-INF、BOOT-INF 和 org 目录的层级关系。 |
| 数字签名 | 如果原 JAR 包有数字签名(META-INF/*.SF, *.RSA),修改内容后会导致签名失效。生产环境需重新签名,测试环境可删除签名文件。 |
| 清单文件 | 确保 MANIFEST.MF 中的 Main-Class 指向正确(Spring Boot 通常是 org.springframework.boot.loader.JarLauncher)。 |
最后,别忘了验证:
打包完成后,花几秒钟检查一下新 JAR 的内部结构,确认文件都在正确的位置:
jar -tf new-package.jar | head -n 20
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9