0

Я пытаюсь подключить сервер DSE 5.0 на Ubuntu (с графиком включения) с моей Java код, но получил эту ошибкуNoClassDefFoundError: И.О./Нетти/обработчик/таймаут/IdleStateHandler Datastax DSE Java драйвер

Exception in thread "main" java.lang.NoClassDefFoundError: io/netty/handler/timeout/IdleStateHandler 
    at com.datastax.driver.core.Connection$Initializer.<init>(Connection.java:1409) 
    at com.datastax.driver.core.Connection.initAsync(Connection.java:144) 
    at com.datastax.driver.core.Connection$Factory.open(Connection.java:796) 
    at com.datastax.driver.core.ControlConnection.tryConnect(ControlConnection.java:253) 
    at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:201) 
    at com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:79) 
    at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1473) 
    at com.datastax.driver.core.Cluster.init(Cluster.java:159) 
    at com.datastax.driver.core.Cluster.connectAsync(Cluster.java:330) 
    at com.datastax.driver.core.Cluster.connectAsync(Cluster.java:305) 
    at com.datastax.driver.core.Cluster.connect(Cluster.java:247) 
    at com.datastax.driver.core.DelegatingCluster.connect(DelegatingCluster.java:71) 
    at com.datastax.driver.dse.DseCluster.connect(DseCluster.java:351) 

Поскольку ошибка говорит, что нетто-библиотека , вероятно, отсутствует.

Я добавил netty-all в мой pom.xml, но затем получил такую ​​же ошибку.

pom.xml

<dependency> 
    <groupId>com.datastax.cassandra</groupId> 
    <artifactId>dse-driver</artifactId> 
    <version>1.1.1-beta1</version> 
</dependency> 
<dependency> 
    <groupId>com.datastax.cassandra</groupId> 
    <artifactId>dse-driver</artifactId> 
    <version>1.1.1-beta1</version> 
</dependency> 
<!-- https://mvnrepository.com/artifact/io.netty/netty-all --> 
<dependency> 
    <groupId>io.netty</groupId> 
    <artifactId>netty-all</artifactId> 
    <version>4.1.6.Final</version> 
</dependency> 

Спасибо за помощь ..!

+0

ли класс в вопросе содержится ни в одном из этих трех артефактов ? – hotzst

+0

Я думаю, что 'netty-all' содержит все сетевые артефакты –

ответ

1

Драйвер java построен и протестирован против Netty 4.0 (см. JAVA-1241 для поддержки 4.1). Возможно, существует некоторая несовместимость, которая мешает этому работать (хотя я вижу IdleStateHandler по этому пути в Netty 4.1).

Если вам нужно использовать другую версию Netty в своем проекте, вы можете использовать классификатор shaded драйвера, который включает в себя свою собственную в комплекте версию netty в рамках собственной структуры пакета. Так как вы используете драйвер DSE вам также необходимо исключить драйвер ядра из его определения зависимостей (это будет менее сложным в будущем):

<dependency> 
     <groupId>com.datastax.cassandra</groupId> 
     <artifactId>cassandra-driver-core</artifactId> 
     <version>3.1.3</version> 
     <classifier>shaded</classifier> 
     <!-- Because the shaded JAR uses the original POM, you still need 
      to exclude this dependency explicitly: --> 
     <exclusions> 
      <exclusion> 
       <groupId>io.netty</groupId> 
       <artifactId>*</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>com.datastax.cassandra</groupId> 
     <artifactId>dse-driver</artifactId> 
     <version>1.1.1-beta1</version> 
     <exclusions> 
      <exclusion> 
       <groupId>com.datastax.cassandra</groupId> 
       <artifactId>cassandra-driver-core</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
+0

не является' dse-driver' по умолчанию, но может быть возможной причиной '.NoClassDefFoundError: io/netty/handler/timeout/IdleStateHandler' –

+0

Если бы вы могли также это: -> Если я хочу использовать функцию dse-graph, в какие библиотеки я должен включить 'java-dse-graph' +' dse-driver' + 'cassandra-driver-core' или только' java -dse-graph' –

+0

Исключая зависимость основного драйвера от dse-драйвера, он также не должен вытаскивать нетто, так как именно здесь и возникает зависимость netty. w/r/t java-dse-graph, вы можете добавить эту зависимость, а затем вызвать зависимость dse-driver напрямую, как в моем ответе. Это некрасиво, но это сработает. –

 Смежные вопросы

  • Нет связанных вопросов^_^