jar包文件签名不合法

由于公司elasticsearch升级,升级到6.2.0,需要对原来的2.x的代码进行api的升级。遇到一些问题,记录一下:

1、首先是elasticsearch jar包打包的问题

elasticsearch_6.2.0 jar包使用的jackson版本是2.8.10,和项目里的版本有冲突,单独引用elasticsearch的包启动项目时一直报错。使用maven-shade-plugin插件可以解决此问题。Java 工程经常会遇到第三方 Jar 包冲突,使用 maven shade plugin 解决 jar 或类的多版本冲突。 maven-shade-plugin 在打包时,可以将项目中依赖的 jar 包中的一些类文件打包到项目构建生成的 jar 包中,在打包的时候把类重命名。

可参考:https://www.jianshu.com/p/7a0e20b30401


2、其次,打成的es-shaded包,引入后,项目启动失败。

出现以下错误:

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

原因:打的jar包文件有加密,签名不合法。这是因为在使用Maven打包的时候导致某些包的重复引用,以至于打包之后的META-INF的目录下多出了一些*.SF,*.DAS,*.RSA文件所致。

在POM文件里加入一些配置,过滤掉这些文件即可:

< configuration >
     < filters >
         < filter >
             < artifact >*:*</ artifact >
             < excludes >
                 < exclude >META-INF/*.SF</ exclude >
                 < exclude >META-INF/*.DSA</ exclude >
                 < exclude >META-INF/*.RSA</ exclude >
             </ excludes >
         </ filter >
     </ filters >
</ configuration >


参考:

https://www.iteblog.com/archives/1569.html

https://www.cnblogs.com/fuxinci/p/3356087.html



猜你喜欢

转载自blog.csdn.net/kevinxxw/article/details/79658400