記一次netty的Hadoop和elasticsearch沖突jar包
阿新 • • 發佈:2018-08-29
att color uid jar 直接 style 運行 tail 版本
在一個項目中同時使用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包引用
記一次netty的Hadoop和elasticsearch沖突jar包