2016-09-06 3 views
1

mvn clean installを実行してプロジェクトをビルドしたとき、私はDependency convergence errorを以下のように取得していました。解決この問題に3つのオープンソースプロジェクトによる依存性コンバージェンスエラーApache Drill、Apache Hadoop、Elastic Searchで異なるバージョンのio.nettyが使用される

Dependency convergence error for io.netty:netty:3.10.5.Final paths to dependency 
are: 
+-com.abc:lmn2-xyz:beta-2.2-20160906_011548 
    +-com.abc:lmn2-foo:beta-2.2-20160906_011548 
    +-org.elasticsearch:elasticsearch:2.3.3 
     +-io.netty:netty:3.10.5.Final 
and 
+-com.abc:lmn2-xyz:beta-2.2-20160906_011548 
    +-org.apache.hadoop:hadoop-client:2.7.1 
    +-org.apache.hadoop:hadoop-common:2.6.0 
     +-org.apache.zookeeper:zookeeper:3.4.6 
     +-io.netty:netty:3.7.0.Final 
and 
+-com.abc:lmn2-xyz:beta-2.2-20160906_011548 
    +-org.elasticsearch:elasticsearch:2.3.3 
    +-io.netty:netty:3.10.5.Final 
and 
+-com.abc:lmn2-xyz:beta-2.2-20160906_011548 
    +-org.apache.drill.exec:drill-jdbc:1.8.0 
    +-org.apache.drill.exec:drill-java-exec:1.8.0 
     +-org.apache.avro:avro-mapred:1.7.7 
     +-org.apache.avro:avro-ipc:1.7.7 
      +-io.netty:netty:3.4.0.Final 
and 
+-com.abc:lmn2-xyz:beta-2.2-20160906_011548 
    +-org.apache.drill.exec:drill-jdbc:1.8.0 
    +-org.apache.drill.exec:drill-java-exec:1.8.0 
     +-org.apache.avro:avro-mapred:1.7.7 
     +-org.apache.avro:avro-ipc:1.7.7 
      +-io.netty:netty:3.4.0.Final 

[WARNING] Rule 1: org.apache.maven.plugins.enforcer.DependencyConvergence failed 
with message: 
Failed while enforcing releasability the error(s) are [ 
Dependency convergence error for io.netty:netty:3.10.5.Final paths to dependency 
are: 
+-com.abc:lmn2-xyz:beta-2.2-20160906_011548 
    +-com.abc:lmn2-foo:beta-2.2-20160906_011548 
    +-org.elasticsearch:elasticsearch:2.3.3 
     +-io.netty:netty:3.10.5.Final 
and 
+-com.abc:lmn2-xyz:beta-2.2-20160906_011548 
    +-org.apache.hadoop:hadoop-client:2.7.1 
    +-org.apache.hadoop:hadoop-common:2.6.0 
     +-org.apache.zookeeper:zookeeper:3.4.6 
     +-io.netty:netty:3.7.0.Final 
and 
+-com.abc:lmn2-xyz:beta-2.2-20160906_011548 
    +-org.elasticsearch:elasticsearch:2.3.3 
    +-io.netty:netty:3.10.5.Final 
and 
+-com.abc:lmn2-xyz:beta-2.2-20160906_011548 
    +-org.apache.drill.exec:drill-jdbc:1.8.0 
    +-org.apache.drill.exec:drill-java-exec:1.8.0 
     +-org.apache.avro:avro-mapred:1.7.7 
     +-org.apache.avro:avro-ipc:1.7.7 
      +-io.netty:netty:3.4.0.Final 
and 
+-com.abc:lmn2-xyz:beta-2.2-20160906_011548 
    +-org.apache.drill.exec:drill-jdbc:1.8.0 
    +-org.apache.drill.exec:drill-java-exec:1.8.0 
     +-org.apache.avro:avro-mapred:1.7.7 
     +-org.apache.avro:avro-ipc:1.7.7 
      +-io.netty:netty:3.4.0.Final 
] 

私はdependency management sectionに​​を置きます。私は、これらのオープンソースプロジェクトの中で最新のio.netty:netty:3.10.5.Finalを使用する方が良いと考えました。その後、正常に構築されます。

しかし、別の問題が発生しました。 Apacheのドリルは、このエラーの下に私を与えて起動します。

java.lang.NoSuchMethodError: io.netty.util.UniqueName.<init>(Ljava/lang/String;)V 
    at io.netty.channel.ChannelOption.<init>(ChannelOption.java:136) ~[netty-transport-4.0.27.Final.jar!/:4.0.27.Final] 
    at io.netty.channel.ChannelOption.valueOf(ChannelOption.java:99) ~[netty-transport-4.0.27.Final.jar!/:4.0.27.Final] 
    at io.netty.channel.ChannelOption.<clinit>(ChannelOption.java:42) ~[netty-transport-4.0.27.Final.jar!/:4.0.27.Final] 
    at org.apache.drill.exec.rpc.BasicClient.<init>(BasicClient.java:76) ~[drill-rpc-1.8.0.jar!/:1.8.0] 
    at org.apache.drill.exec.rpc.BasicClientWithConnection.<init>(BasicClientWithConnection.java:39) ~[drill-rpc-1.8.0.jar!/:1.8.0] 
    at org.apache.drill.exec.rpc.user.UserClient.<init>(UserClient.java:66) ~[drill-java-exec-1.8.0.jar!/:1.8.0] 
    at org.apache.drill.exec.client.DrillClient.connect(DrillClient.java:254) ~[drill-java-exec-1.8.0.jar!/:1.8.0] 
    at org.apache.drill.jdbc.impl.DrillConnectionImpl.<init>(DrillConnectionImpl.java:145) ~[drill-jdbc-1.8.0.jar!/:1.8.0] 
    at org.apache.drill.jdbc.impl.DrillJdbc41Factory.newDrillConnection(DrillJdbc41Factory.java:64) ~[drill-jdbc-1.8.0.jar!/:1.8.0] 
    at org.apache.drill.jdbc.impl.DrillFactory.newConnection(DrillFactory.java:69) ~[drill-jdbc-1.8.0.jar!/:1.8.0] 
    at net.hydromatic.avatica.UnregisteredDriver.connect(UnregisteredDriver.java:126) ~[optiq-avatica-0.9-drill-r20.jar!/:na] 
    at org.apache.drill.jdbc.Driver.connect(Driver.java:72) ~[drill-jdbc-1.8.0.jar!/:1.8.0] 
    at java.sql.DriverManager.getConnection(Unknown Source) ~[na:1.8.0_77] 
    at java.sql.DriverManager.getConnection(Unknown Source) ~[na:1.8.0_77] 

私はそれがio.netty.util.UniqueNameクラスが含まれていないことが判明​​jarファイルを抽出するとき。

プロジェクトでApache Drill、Apache Hadoop、Elastic検索を使用していますが、特定のバージョンのio.nettyが必要です。この場合、どうしたらいいですか?助けてください。前もって感謝します。

答えて

0

Netty 4.0(4.0.27)ではなくNetty 3.X(io.netty.util.UniqueNameはNetty 4.0のみ)を参照しているので、Nettyの依存関係に何か間違っていると思います。

at io.netty.channel.ChannelOption.<init>(ChannelOption.java:136) ~[netty-transport-4.0.27.Final.jar!/:4.0.27.Final] 

明示的に3.10.6のバージョンを使用してください。

関連する問題