尝试运行.jar时出现“无效的签名文件”
2022-08-31 04:25:20
我的java程序被打包在一个jar文件中,并使用外部jar库,充气城堡。我的代码编译正常,但运行 jar 会导致以下错误:
线程“main” java.lang.Security中的异常异常:清单主属性的签名文件摘要无效
我已经用谷歌搜索了一个多小时,寻找一个解释,发现没有什么价值。如果有人以前见过这个错误,可以提供一些帮助,我会有义务。
我的java程序被打包在一个jar文件中,并使用外部jar库,充气城堡。我的代码编译正常,但运行 jar 会导致以下错误:
线程“main” java.lang.Security中的异常异常:清单主属性的签名文件摘要无效
我已经用谷歌搜索了一个多小时,寻找一个解释,发现没有什么价值。如果有人以前见过这个错误,可以提供一些帮助,我会有义务。
对于那些在尝试创建带有阴影的uber-jar时遇到此错误的人来说,解决方案是通过在插件配置中添加以下行来排除清单签名文件:maven-shade-plugin
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
<!-- Additional configuration. -->
</configuration>
对于那些使用gradle并尝试创建和使用胖罐的人来说,以下语法可能会有所帮助。
jar {
doFirst {
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}
exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'
}