修改JAR文件并重新打包的两种方式
本文介绍两种修改 JAR 包内文件(如配置文件或 Class 文件)后重新打包的方式:Ja va 命令方式 与 Ant 脚本方式。
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

核心警告
对于 Spring Boot 的可执行 JAR 包,重新打包时严禁使用压缩(必须使用存储模式),否则会导致 ClassNotFoundException 或启动失败。
一、Ja va 命令方式 (通用/快速)
这种方式最适合临时修改,或者手头没有构建工具的环境。操作直接,几步就能搞定。
1. 解压 JAR 文件
第一步,就是把 JAR 包里的内容“掏”出来。打开终端,执行这条命令:
# -x: 解压, -f: 指定文件, -v: 显示过程(可选) jar -xf your-file.jar
执行后,当前目录下就会出现解压出来的所有文件和文件夹。
2. 修改文件
接下来,就是自由发挥的时间了。进入解压后的目录,找到你需要修改的文件。比如,要改配置文件,就编辑 BOOT-INF/classes/application.yml;要替换某个类,就找到对应的 .class 文件进行覆盖。
3. 重新打包 (关键步骤)
修改完成,重新打包。这里有个关键点,敲黑板了:
# 注意:必须包含 -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 脚本方式 (自动化/批处理)
如果你需要频繁修改,或者项目还在用老旧的构建流程,那么写一个 Ant 脚本来自动化整个过程会更高效。
1.build.xml配置示例
下面是一个可以直接拿来用的 build.xml 示例,注释写得很清楚了:
Spring Boot JAR 包热修复/修改工具
2. 执行流程
使用起来就两步,非常清晰:
# 第一步:解压 (依赖 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
热门专题
热门推荐
一、授予系统权限并启动基础服务 想让BetterTouchTool真正“活”起来,第一步就得打通系统权限。它需要“辅助功能”权限来监听你的触控板事件,也需要“屏幕录制”权限来执行一些窗口操作。这两项权限缺一不可,否则你会发现手势做了,但电脑毫无反应。 具体操作其实不复杂:先进入系统「设置」-「隐私与
如何开启Windows 11“高性能模式” 解决笔记本玩游戏掉帧降频方法 笔记本玩游戏,最扫兴的莫过于画面突然卡顿、帧率断崖式下跌。很多时候,问题并非出在硬件本身,而是Windows 11默认的电源策略在“拖后腿”。为了省电,系统会动态调节处理器频率、让核心休眠,甚至给显卡设置功耗墙,这直接限制了硬
macOS更新失败?别慌,这五步能帮你搞定 升级macOS时,进度条卡住不动、弹窗提示“无法验证更新”或者干脆报错退出,这事儿确实让人头疼。其实,这些看似随机的故障,背后通常逃不出几个核心原因:存储空间不连续、网络连接不干净、缓存文件有冲突,或者磁盘底层出了点小状况。别担心,按照下面这套经过验证的步
Linux下使用Jattach工具诊断Ja va进程 零停机获取Dump信息 开门见山,先说一个核心判断:jattach 并非 JDK 自带工具,也不能直接替代 jstack。但它的价值在于,能在某些棘手场景下,绕过 JVM 的安全限制成功获取 dump。当然,这有个前提——目标 JVM 的 Att
Tyk Dashboard 启动失败?从配置到排查的完整指南 在Linux上部署Tyk,可不是简单的apt install或yum install就能搞定。它背后依赖着MongoDB和Redis,并且对配置顺序有严格的要求。跳过其中任何一环,tyk-dashboard服务很可能就会卡在502错误,或





