网上找的资料说是由于有些依赖中重复引用了某个包,以至于打包之后的META-INF的目录下多出了一些*.SF,.DSA,.RSA文件所致,可手动删除这些问题后,再执行jar包
通过java指令执行jar包,提示Invalid signature file digest for Manifest main attributes
解决方案1:(手动删除文件)
通过压缩软件查看程序生成的jar包,可以看到META文件下有.SF,.DSA结尾的文件,手动删除后,再查看该目录下MANIFEST.MF文件中是否有指定要运行的main方法路径,不存在则手动添加,修改后保存,即可正常执行jar包
方案二:maven中使用打包插件排除(推荐)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.ctid.kms.report.transform.TransformMain</mainClass>
</transformer>
</transformers>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>module-info.class</exclude>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
低版本的maven-shade-plugin在配置filter artifact时会报 No artifact matching filter 错误,不能排除指定的文件文章来源:https://www.toymoban.com/news/detail-470899.html
具体原因不知,或许是低版本语法不同,有知道的可以告知一下,我这里使用3.2.1 版本,打jar包后,查看程序META-INF目录已经不再生成 *.SF等文件,jar包也可正常运行文章来源地址https://www.toymoban.com/news/detail-470899.html
到了这里,关于Invalid signature file digest for Manifest main attributes的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!