首页 游戏 软件 资讯 排行榜 专题
首页
编程语言
修改JAR文件并重新打包的两种方式

修改JAR文件并重新打包的两种方式

热心网友
80
转载
2026-04-30

本文介绍两种修改 JAR 包内文件(如配置文件或 Class 文件)后重新打包的方式:Ja va 命令方式Ant 脚本方式

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

修改JAR文件并重新打包的两种方式

核心警告

对于 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-INFBOOT-INForg 目录的层级关系。
数字签名如果原 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
来源:https://www.jb51.net/program/362467ufv.htm
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

Mac如何使用BetterTouchTool增强触控_Mac BetterTouchTool增强触控步骤
系统平台
Mac如何使用BetterTouchTool增强触控_Mac BetterTouchTool增强触控步骤

一、授予系统权限并启动基础服务 想让BetterTouchTool真正“活”起来,第一步就得打通系统权限。它需要“辅助功能”权限来监听你的触控板事件,也需要“屏幕录制”权限来执行一些窗口操作。这两项权限缺一不可,否则你会发现手势做了,但电脑毫无反应。 具体操作其实不复杂:先进入系统「设置」-「隐私与

热心网友
04.30
如何开启Windows 11“高性能模式” 解决笔记本玩游戏掉帧降频方法
系统平台
如何开启Windows 11“高性能模式” 解决笔记本玩游戏掉帧降频方法

如何开启Windows 11“高性能模式” 解决笔记本玩游戏掉帧降频方法 笔记本玩游戏,最扫兴的莫过于画面突然卡顿、帧率断崖式下跌。很多时候,问题并非出在硬件本身,而是Windows 11默认的电源策略在“拖后腿”。为了省电,系统会动态调节处理器频率、让核心休眠,甚至给显卡设置功耗墙,这直接限制了硬

热心网友
04.30
Mac系统更新失败提示错误的解决方法
系统平台
Mac系统更新失败提示错误的解决方法

macOS更新失败?别慌,这五步能帮你搞定 升级macOS时,进度条卡住不动、弹窗提示“无法验证更新”或者干脆报错退出,这事儿确实让人头疼。其实,这些看似随机的故障,背后通常逃不出几个核心原因:存储空间不连续、网络连接不干净、缓存文件有冲突,或者磁盘底层出了点小状况。别担心,按照下面这套经过验证的步

热心网友
04.30
Linux下使用Jattach工具诊断Java进程 零停机获取Dump信息
系统平台
Linux下使用Jattach工具诊断Java进程 零停机获取Dump信息

Linux下使用Jattach工具诊断Ja va进程 零停机获取Dump信息 开门见山,先说一个核心判断:jattach 并非 JDK 自带工具,也不能直接替代 jstack。但它的价值在于,能在某些棘手场景下,绕过 JVM 的安全限制成功获取 dump。当然,这有个前提——目标 JVM 的 Att

热心网友
04.30
Linux怎么安装和配置Tyk API网关 Linux开源网关管理详解
系统平台
Linux怎么安装和配置Tyk API网关 Linux开源网关管理详解

Tyk Dashboard 启动失败?从配置到排查的完整指南 在Linux上部署Tyk,可不是简单的apt install或yum install就能搞定。它背后依赖着MongoDB和Redis,并且对配置顺序有严格的要求。跳过其中任何一环,tyk-dashboard服务很可能就会卡在502错误,或

热心网友
04.30