【问题标题】:java.lang.NoClassDefFoundError: com/google/common/util/concurrent/FutureFallbackjava.lang.NoClassDefFoundError: com/google/common/util/concurrent/FutureFallback
【发布时间】:2016-08-19 13:59:32
【问题描述】:

我看到以下错误:

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>

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

【问题讨论】:

  • FutureFallback 已在 Guava 14 中引入,因此我怀疑您指定的版本(16.0.1)没有被考虑在内,而是使用了一些非常旧的版本;您可以运行“mvn dependency:resolve”并检查正在为您的构建解析的 Guava 的实际版本吗?
  • @adutra 并在 Guava 19 中弃用,然后在 Guava 20 中删除google.github.io/guava/releases/19.0/api/docs/com/google/common/…
  • 确实如此,我们已经意识到并正在努力替换它:datastax-oss.atlassian.net/browse/JAVA-1328。目前,驱动程序无法使用 Guava 20。

标签: maven cassandra guava


【解决方案1】:

com.google.common.util.concurrent.FutureFallback 在 Guava 19.0 中已被弃用,并在 Guava 20.0 中被删除。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 如何解决。此版本的 cassandra 驱动使用 guava 19
    【解决方案3】:

    不要添加外部番石榴版本。无论 datastax-cassandra-core 只使用你可以放那个版本。否则就不需要了。

    【讨论】:

      【解决方案4】:

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

      该驱动程序现在需要 Java 8。它不再依赖于 Guava(我们仍在内部使用它,但它被遮蔽了)。

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

      【讨论】:

        猜你喜欢
        • 2017-07-02
        • 2021-02-12
        • 1970-01-01
        • 2018-01-18
        • 2018-05-26
        • 2023-03-12
        • 1970-01-01
        • 1970-01-01
        • 2016-04-20
        相关资源
        最近更新 更多