maven项目使用加密工具类引入了一些依赖后,打jar包并执行jar包出现Invalid signature file digest for Manifest main attributes的错误
网上找的资料说是由于有些依赖中重复引用了某个包,以至于打包之后的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中使用打包插件排除(推荐)
org.apache.maven.plugins maven-shade-plugin 3.2.1 package shade com.ctid.kms.report.transform.TransformMain *:* module-info.class META-INF/*.SF META-INF/*.DSA META-INF/*.RSA
低版本的maven-shade-plugin在配置filter artifact时会报 No artifact matching filter 错误,不能排除指定的文件
具体原因不知,或许是低版本语法不同,有知道的可以告知一下,我这里使用3.2.1 版本,打jar包后,查看程序META-INF目录已经不再生成 *.SF等文件,jar包也可正常运行
来源地址:https://blog.csdn.net/weixin_51172484/article/details/127894334