由于公司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