spring boot替换jar包中引用的jar包(Unable to open nested entry 'BOOT-INF/lib/**.jar'. It has been compressed)

本文介绍在SpringBoot项目中,如何正确替换嵌套在主Jar中的依赖Jar,避免因压缩方式不当导致的Unable to open nested entry 'BOOT-INF/lib/**.jar'错误。文章提供了使用jar命令进行解压、替换及重新打包的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

spring boot项目,使用jar方式打包部署

需求

有时候我们需要替换项目中某个引用jar,又不想将整个项目重新打包。

问题

通过一般方式,用好压等压缩软件直接打开jar包,如果直接替换.class、.html、.yml格式的文件,可正常替换成功并生效。
但是替换jar包中引用的jar包,用这样的方式是不可以的,在替换完成后启动项目,会报以下错误:

Caused by: java.lang.IllegalStateException: Unable to open nested entry 'BOOT-INF/lib/**.jar'. 
It has been compressed and nested jar files must be stored without compression.
 Please check the mechanism used to create your executable jar file

解决

可通过jar命令先将jar包解压,在解压目录中将引用jar包替换后,再重新压缩,命令如下(注意替换**为自己实际jar包名称)
解压:

jar -xvf .\**.jar

替换引用jar
替换完成后重新压缩打包:

jar -cfM0 **.jar ./
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'instanceOperatorClientImpl' defined in URL [jar:file:/E:/service/nacos-server-2.2.3/nacos/target/nacos-server.jar!/BOOT-INF/lib/nacos-naming-2.2.3.jar!/com/alibaba/nacos/naming/core/InstanceOperatorClientImpl.class]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'clientOperationServiceProxy' defined in URL [jar:file:/E:/service/nacos-server-2.2.3/nacos/target/nacos-server.jar!/BOOT-INF/lib/nacos-naming-2.2.3.jar!/com/alibaba/nacos/naming/core/v2/service/ClientOperationServiceProxy.class]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'persistentClientOperationServiceImpl' defined in URL [jar:file:/E:/service/nacos-server-2.2.3/nacos/target/nacos-server.jar!/BOOT-INF/lib/nacos-naming-2.2.3.jar!/com/alibaba/nacos/naming/core/v2/service/impl/PersistentClientOperationServiceImpl.class]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.alibaba.nacos.naming.core.v2.service.impl.PersistentClientOperationServiceImpl]: Constructor threw exception; nested exception is java.lang.UnsatisfiedLinkError: C:\Users\Administrator\AppData\Local\Temp\librocksdbjni15037951375079649142.dll:
07-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值