如何替换jar包中的文件
背景
最近有部分线上jar包中出现了问题,在没有源代码的情况下,如何快速修改jar包中的配置文件呢?
方法
1.解压
mv a.jar b.zip
unzip b.zip
2.修改对应的文件
3.重新打包(在解压后的文件夹中)
jar -cMf c.jar *
重新执行c.jar即可
其他知识
全程注意命令行后面的点(.),表示当前目录,不能删除。
jar -cf c.jar . //重新打包本目录下的文件到c.jar,此时会提示没有主程序,因为会重新生成MANIFEST.MF
jar -cfm c.jar ./META-INF/MANIFEST.MF . //重新打包当前目录下文件到c.jar,此时会提示部分jar包找不到,原因是当压缩时,把原本lib目录下的jar包又压缩了一遍,因此java -jar执行时无法识别服务中引用的jar包
jar -uf c.jar ./META-INF/MANIFEST.MF //仅更新./META-INF/MANIFEST.MF文件,没有尝试仅更新yml文件是否可行,后续可以尝试一下
jar -cMf c.jar * //打包并不生成MANIFEST.MF文件,此时会提示无法识别lib中的jar包
jar -cMf0 c.jar * //打包但不压缩文件夹中的内容(此方法正确)