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

Pra*_*nde 15 cassandra maven guava

我看到以下错误:

java.lang.NoClassDefFoundError: com/google/common/util/concurrent/FutureFallback
Run Code Online (Sandbox Code Playgroud)

什么时候cluster.connect()叫:

            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);
Run Code Online (Sandbox Code Playgroud)

pom.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>
Run Code Online (Sandbox Code Playgroud)

我在这里看到了stackoverflow上的帖子 ,他们建议将番石榴版本升级到16.0.1,但这并没有帮我解决我的问题.由于我是cassandra的新手,因此这里的一些指示非常有用.为了添加更多背景,这个东西作为一个独立项目工作,当我将这个项目作为maven依赖项包含到其他项目时,它会引发这个运行时错误.

Hen*_*wan 16

com.google.common.util.concurrent.FutureFallback 在Guava 19.0中被弃用,并且自Guava 20.0以来被删除.

在升级Cassandra驱动程序之前,请使用Guava 19.0并且不要使用Guava 20.0或更高版本.


gma*_*che 5

我将 Cassandra 驱动程序版本更新为最新可用版本,它应该可以解决问题。

<dependency>
   <groupId>com.datastax.cassandra</groupId>
   <artifactId>cassandra-driver-core</artifactId>
   <version>3.5.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)


mah*_*ngh 2

不要添加外部番石榴版本。无论使用什么 datastax-cassandra-core,只有您可以放置​​该版本。否则不需要那个。