1. 程式人生 > >記一次netty的Hadoop和elasticsearch沖突jar包

記一次netty的Hadoop和elasticsearch沖突jar包

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包