尝试运行.jar时出现“无效的签名文件”

2022-08-31 04:25:20

我的java程序被打包在一个jar文件中,并使用外部jar库,充气城堡。我的代码编译正常,但运行 jar 会导致以下错误:

线程“main” java.lang.Security中的异常异常:清单主属性的签名文件摘要无效

我已经用谷歌搜索了一个多小时,寻找一个解释,发现没有什么价值。如果有人以前见过这个错误,可以提供一些帮助,我会有义务。


答案 1

对于那些在尝试创建带有阴影的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>

答案 2

对于那些使用gradle并尝试创建和使用胖罐的人来说,以下语法可能会有所帮助。

jar {
    doFirst {
        from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } 
    }
    exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA' 
}

推荐