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

Maven java.lang.NoClassDefFoundError:com/google/common/util/concurrent/FutureFallback,maven,cassandra,guava,Maven,Cassandra,Guava,我看到以下错误: java.lang.NoClassDefFoundError: com/google/common/util/concurrent/FutureFallback 调用cluster.connect()时: String hosts = CassandraClientUtil.getHost(); String localDC = CassandraClientUtil.getLocalDC(); Clus

我看到以下错误:

java.lang.NoClassDefFoundError: com/google/common/util/concurrent/FutureFallback
调用
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);
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>

番石榴

他们建议将guava版本升级到16.0.1,但这并没有帮助我解决问题。由于我是卡桑德拉的新手,这里的一些指导将非常有用。要添加更多背景,这件事作为一个独立的项目工作,当我将此项目作为maven依赖项包含到其他项目中时,会引发此运行时错误。

不要添加外部guava版本。无论什么数据,只要使用cassandra core,您就可以将该版本。否则就不需要了。

在Guava19.0中被弃用,并从Guava20.0中删除


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

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

<dependency>
   <groupId>com.datastax.cassandra</groupId>
   <artifactId>cassandra-driver-core</artifactId>
   <version>3.5.0</version>
</dependency>

com.datasax.cassandra
卡桑德拉驱动核心
3.5.0

如果像我这样的人不知道,有一个新版本(4.x)有一个新的和不同的组id,请查看。这个新版本仍然使用番石榴,但它的阴影

驱动程序现在需要Java8。它不再依赖于番石榴(我们仍然在内部使用它,但它有阴影)


更多信息可以在。

Guava 14中引入了FutureFallback,因此我怀疑没有考虑您指定的版本(16.0.1),而是使用了一些非常旧的版本;您能否运行“mvn dependency:resolve”并检查正在为您的构建解析的Guava的实际版本?@adutra,在Guava 19中被弃用,然后在Guava 20中被删除:没错,我们知道它并正在努力替换它:。目前,驱动程序无法使用Guava 20。它如何修复。此版本的cassandra驱动程序使用guava 19