有一个jar包,需要替换里面的文件,使用解压工具打开项目,然后找到对应的子包,再次打开,然后进行手工替换重新压缩成jar包后,发现启动服务报错Failed to get nested archive for entry。
使用下面的命令可实现替换并重新打包成jar包的功能
1、解压
点击红框输入cmd回车进入窗口,输入命令:
java">jar -xvf main.jar
解压后出现三个文件夹
jar_11">2、替换文件并重新添加到初始jar包
替换BOOT-INF文件夹里面的jar包或class文件,替换之后执行打包命令进行再次打包,命令如下
java">jar -uvf0 main.jar .\BOOT-INF\classes\org\springblade\modules\api\controller\DeviceController.class
-u: 表示更新现有 JAR 文件。这会将指定的新文件添加到 JAR 文件中,如果文件已存在,则会覆盖原有的文件。
-v: 表示详细模式,即在标准输出中显示有关文件添加的详细信息。
-f: 指定要更新的 JAR 文件名
0 表示压缩级别为 0,意味着不压缩。这是一个数字零,而不是字母 “o”。这意味着文件会被原样放入 JAR 文件中,不会进行任何压缩。
看到如下提示,则证明编译成功
可以把三个文件夹删除了,如果不放心可再次解压后查看。
使用命令看看jar是否可以正常启动
java">java -jar main.jar --server.port=8081
总结:
1、解压:jar -xvf xx.jar
2、替换文件
3.、把替换的文件追加到jar包:
java">jar -uvf0 main.jar .\BOOT-INF\classes\org\springblade\modules\api\controller\DeviceController.class