解决java.lang.SecurityException: Invalid signature file digest for Manifest main attributes


一、问题来源

当项目依赖其他jar包的时候,打出的jar包执行出错,抛出标题中的异常。

原因:因为依赖jar包中的META-INF中有多余的.SF文件与当前jar包冲突。

二、解决方案

2.1 打包前排除

maven项目在pom.xml文件:

<plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-shade-pluginartifactId>
                <version>3.1.0version>
                <executions>
                    <execution>
                        <phase>packagephase>
                        <goals>
                            <goal>shadegoal>
                        goals>
                        <configuration>
                            <filters>
                                <filter>
                                    <artifact>*:*artifact>
                                    <excludes>
                                        <exclude>META-INF/*.SFexclude>
                                        <exclude>META-INF/*.DSAexclude>
                                        <exclude>META-INF/*.RSAexclude>
                                    excludes>
                                filter>
                            filters>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>[mvean项目启动类的路径,例如:com.alarm.mainclass]mainClass>
                                transformer>
                            transformers>
                        configuration>
                    execution>
                executions>
            plugin>
        plugins>
    build>

2.2 打包后删除

在打完的jar包执行
zip -d your.jar 'META-INF/.SF' 'META-INF/.RSA' 'META-INF/*SF' 

参考链接:

1.https://www.jianshu.com/p/cd1f1b33a41a

2.https://blog.csdn.net/tian_shi_hei_de/article/details/78490392