【问题标题】:spring data cassandra ImmutableMap exceptionspring data cassandra ImmutableMap 异常
【发布时间】:2017-06-26 23:18:25
【问题描述】:

Spring boot Cassandra starter 1.5.1 抛出异常:

java.lang.ClassNotFoundException: com.google.common.util.concurrent.AsyncFunction

java.lang.ClassNotFoundException: com.google.common.collect.ImmutableMap 

尝试创建CassandraClusterFactoryBean 对象时。

有解决办法吗?

一个新的 Spring 数据 - 来自 start.spring.io 的 cassandra 项目在其测试运行中也抛出了类似的异常。

【问题讨论】:

    标签: spring-boot spring-data spring-data-cassandra


    【解决方案1】:

    ClassNotFoundException 表示这些类不在您的类路径中,那么您应该将此依赖项添加到您的 pom.xml 中

    <!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>16.01</version>
    </dependency>
    

    如果您不使用 maven,只需转到此 link 并下载 jar 文件并将其包含在您的 java 类路径中 根据你做项目的方式,这个版本的依赖会发生变化,只需寻找适合你的 spring-data 版本的兼容版本here

    更新: 您应该使用guava 16.01 method,因为在guava 19 method 中,该方法不再像API 所说的那样有效

    @Deprecated
    @GwtIncompatible(value="TODO")
    public static ListeningExecutorService sameThreadExecutor()
    Deprecated. Use directExecutor() if you only require an Executor and newDirectExecutorService() if you need a ListeningExecutorService. 
    This method will be removed in August 2016.
    

    根据编译依赖部分的this,guava是16.01

    【讨论】:

    • Spring data cassandra 已经引入了 guava 19.0,但为了检查它是否有效,我添加了 21.0 dep。那个力解决了这个问题,它仍然给出了一个异常,原因是:java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.sameThreadExecutor()Lcom/google/common/util/concurrent/ListeningExecutorService;在 com.datastax.driver.core.PoolingOptions.(PoolingOptions.java:146) ~[cassandra-driver-core-3.1.3.jar:na]
    • 看我的更新,你应该使用guava 16.01作为编译版本点,任何其他版本都会给你冲突
    猜你喜欢
    • 2021-08-19
    • 1970-01-01
    • 2019-05-03
    • 2015-09-26
    • 1970-01-01
    • 2018-08-23
    • 2020-10-31
    • 2020-02-19
    • 1970-01-01
    相关资源
    最近更新 更多