2016-04-25 2 views
9

私は次のエラー見ている:cluster.connect()が呼び出されjava.lang.NoClassDefFoundErrorが:COM/Googleは/共通/ utilに/同時/ FutureFallback

java.lang.NoClassDefFoundError: com/google/common/util/concurrent/FutureFallback 

  String hosts = CassandraClientUtil.getHost(); 
      String localDC = CassandraClientUtil.getLocalDC(); 
      Cluster cluster = null; 
      if (StringUtils.isNotEmpty(localDC)) 
      { 
       cluster = Cluster.builder().addContactPoints(hosts.split(",")) 
         .withCredentials(CassandraCopsComponentLogger.USER_NAME, CassandraCopsComponentLogger.AUTH_CODE) 
         .withQueryOptions(new QueryOptions().setConsistencyLevel(ConsistencyLevel.LOCAL_ONE)) 
         .withLoadBalancingPolicy(new TokenAwarePolicy(DCAwareRoundRobinPolicy.builder().withLocalDc(localDC).build())).build(); 
      } 
      else 
      { 
       cluster = Cluster.builder().addContactPoints(hosts.split(",")) 
         .withCredentials(CassandraCopsComponentLogger.USER_NAME, CassandraCopsComponentLogger.AUTH_CODE) 
         .withQueryOptions(new QueryOptions().setConsistencyLevel(ConsistencyLevel.LOCAL_ONE)).build(); 
      } 

      Session session = cluster.connect(); 
      CassandraCopsComponentLogger.mappingManager = new MappingManager(session); 

ポンポンを.xmlには次の依存関係があります。

<dependencies> 
     <dependency> 
       <groupId>com.google.guava</groupId> 
       <artifactId>guava</artifactId> 
       <version>16.0.1</version> 
     </dependency> 
     <dependency> 
      <groupId>com.datastax.cassandra</groupId> 
      <artifactId>cassandra-driver-core</artifactId> 
      <version>2.1.9</version> 
     </dependency> 
     <dependency> 
      <groupId>io.netty</groupId> 
      <artifactId>netty</artifactId> 
      <version>3.9.0.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>com.codahale.metrics</groupId> 
      <artifactId>metrics-core</artifactId> 
      <version>3.0.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.7.5</version> 
     </dependency> 
     <dependency> 
      <groupId>com.datastax.cassandra</groupId> 
      <artifactId>cassandra-driver-mapping</artifactId> 
      <version>2.1.9</version> 
     </dependency> 
     <dependency> 
      <groupId>com.google.code.gson</groupId> 
      <artifactId>gson</artifactId> 
      <version>2.3.1</version> 
     </dependency> 
    </dependencies> 

私はpostover stackflowflow here グアバのバージョンを16.0.1にアップグレードすることをお勧めしましたが、それは私の問題を解決するのに役立ちませんでした。私がcassandraを初めて知りましたので、ここからのいくつかの指示が本当に役に立ちます。バックグラウンドを追加するには、このプロジェクトをスタンドアロンプ​​ロジェクトとして使用します。このプロジェクトを他のプロジェクトへの依存関係として組み込むと、このランタイムエラーが発生します。

+1

Guava 14にFutureFallbackが導入されました。あなたが指定したバージョン(16.0.1)が考慮されていないと思われ、非常に古いバージョンが代わりに使用されています。あなたは "mvn dependency:resolve"を実行し、あなたのビルドで解決されたGuavaの実際のバージョンを確認できますか? – adutra

+1

@adutraそして、グアバ20に** **取り除いた後、グアバ19で非推奨:https://google.github.io/guava/releases/19.0/api/docs/com/google/common/util/concurrent/FutureFallback .html –

+1

それは本当です、我々はそれを認識しており、それを取り替えることに取り組んでいます:https://datastax-oss.atlassian.net/browse/JAVA-1328。現在、ドライバーはGuava 20で作業できません。 – adutra

答えて

1

は、外部グアババージョンを追加しないでください。どんなdatastax-cassandra-coreでもあなただけがそのバージョンを置くことができます。そうでなければ、その必要はありません。

10

com.google.common.util.concurrent.FutureFallbackは、Guava 19.0では非推奨で、Guava 20.0からは削除されました。

Cassandraドライバをアップグレードするまで、Guava 19.0を使用し、Guava 20.0以降は使用しないでください。

関連する問題