在一个项目中同时使用hbase和elasticsearch出现netty的jar包冲突的问题
- 事件:
在同一maven项目中使用hbase的同时又用了es
程序运行后出错
1 java.lang.NoSuchMethodError: io.netty.util.AttributeKey.newInstance(Ljava/lang/String;)Lio/netty/util/AttributeKey;
上网查了一些原因,说是netty的版本不同的原因,自己在编译后的目录也看到了不同,分别用了4.0.23和4.1.13两个版本
但不知怎么修改
直到遇见一位大神给出了解决办法
大神地址
作者:hayaqi0504
- 原因:
pom文件里不同组建各自依赖的netty的版本不同,
例如:我的就是hbase依赖的netty版本和elasticsearch的不同
- 解决办法:
1.在idea的terminal查看pom所在目录
mvn dependency:tree
找到不同的jar版本,我的es用的4.1.13,而
2.在pom.xml中强制引用netty的依赖,直接使用es所用的版本,因为es用的版本高于hbase所依赖的
<dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.13.Final</version> </dependency>
注:mvn dependency:tree -Dverbose -Dincludes=asm:asm 类似的命令可以找到重复的jar包引用