java.lang.NoClassDefFoundError:COM /谷歌/普通/ UTIL /并发/ FutureFallback

问题描述 投票:15回答:4

我看到了以下错误:

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>

我看到计算器here后,他们推荐给番石榴版本升级到16.0.1但这并没有帮我解决我的问题。因为我是新来的卡桑德拉从这里的一些方向将是很有益的。要添加更多的背景这个东西可以作为一个独立的项目,如果我将这个项目作为一个maven依赖于其他一些项目也引发此运行时错误。

maven cassandra guava
4个回答
16
投票

com.google.common.util.concurrent.FutureFallback在番石榴19.0弃用,自番石榴20.0去除。

使用番石榴19.0,不要使用番石榴20.0或更高版本,直到你升级卡桑德拉驱动程序。


3
投票

我更新了卡桑德拉的驱动程序版本,最新的,它应该解决这个问题。

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

1
投票

不要添加外部番石榴版本。无论使用只有你可以把那个版本datastax-卡桑德拉核心。否则并不需要这一点。


0
投票

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

此时,驾驶员需要Java 8.不依赖于番石榴了(我们仍然可以在内部使用,但它的阴影)。

更多信息可以在upgrade guide找到。

© www.soinside.com 2019 - 2024. All rights reserved.