如何更新Jar包里的lib/jar包 |
您所在的位置:网站首页 › 修改jar包中的jar包配置 › 如何更新Jar包里的lib/jar包 |
先说碰到的问题,和如何解决的。 问题,更新可执行JAR包里的lib JAR包后,执行JAR包,报如下错误: Caused by: java.lang.IllegalStateException: Unable to open nested entry '****/lib/***-1.0-SNAPSHOT.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不应该是Deflate应该和其他的JAR包一样Store。 解决方案:问题清楚了开始解决。很简单我找了个工具Winrar,多么普通的一个压缩工具啊。 当添加修改后的JAR包的时候compression method选择store。也就是直接存储不压缩。 问题搞定了。 接下来详细的说一下: 先说一下我碰到这个问题的背景吧。 我手里有一个可执行Jar包,有且仅有一个Jar包,没有源码。我发现这个可执行Jar包发布出去后,有个功能出了问题。由于没有源码,你只能反编译来看(JD-GUI,自行了解一下),轻松定位到问题。问题出在这个可执行Jar包里的BOOT-INF/lib下的一个lib Jar包里。 然后我做了以下动作 1.把出问题的的class文件反编译,把内容copy出来做一个同名,同包的java文件。修改问题点。 2.把可执行Jar包打开,把所有的lib Jar包copy出来,本地搭建了可以编译第1条里改正过的java类的环境。 3.把编译后的正确的class放回lib Jar包里,替换掉原来有问题的class文件。 4.把lib Jar 包放回可执行Jar包内。 5.执行Jar包。出问题了。 Caused by: java.lang.IllegalStateException: Unable to open nested entry 'BOOT-INF/lib/service-1.0-SNAPSHOT.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 6.然后就有了上边解决问题得方法了。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |