/ / Помилка конвергенції залежно від трьох відкритихвихідні проекти Apache Drill, Apache Hadoop і Elastic search використовують іншу версію io.netty - java, netty, dependency-management, nosuchmethoderor

Помилка конвергенції залежно від трьох проектів з відкритим кодом Apache Drill, Apache Hadoop та Elastic search використовують різну версію io.nettyі - java, netty, dependency-management, nosuchmethoderror

Коли я побіг mvn clean install щоб побудувати проект тоді я отримував Dependency convergence error як ви можете побачити нижче.

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
]

Щоб вирішити це питання, я поставлю io.netty:netty:3.10.6.Final в dependency management section. Я думав, що краще використовувати останню io.netty:netty:3.10.5.Final серед цих проектів з відкритим вихідним кодом. Після цього його успішно будують.

Але я потрапляю в інше питання. Apache Drill почати давати мені це нижче помилка:

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:netty:3.10.6.Final я знайшов, що він не містить io.netty.util.UniqueName клас

Я використовую Apache Drill, Apache Hadoop і Elastic пошук у проекті, але вони потребують конкретної версії io.netty. Що робити в цьому випадку? Будь ласка, допоможіть. Заздалегідь спасибі.

Відповіді:

0 для відповіді № 1

Я вважаю, що ви робите щось неправильне у вашій залежності для Netty, оскільки тепер ви маєте на увазі Netty 4.0 (4.0.27), а не Netty 3.X (io.netty.util.UniqueName лише в Netty 4.0).

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

Спробуйте використати останню версію 3.10 (3.10.6).