Исключение Spring Data Cassandra ImmutableMap

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 data-cassandra от start.spring.io также выдает аналогичное исключение при тестовом прогоне.


person venkat g    schedule 09.02.2017    source источник


Ответы (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, просто перейдите по этой ссылке и загрузите jar и включите его в свой путь к классам java. В зависимости от того, как вы делаете свой проект, эта версия этой зависимости будет меняться, просто найдите совместимую версию для вашей версии spring-data здесь

Обновление: вы должны использовать метод guava 16.01, потому что в метод guava 19 метод больше недействителен, как сказал 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.

Согласно этому в скомпилированных зависимостях раздел, гуава 16.01

person Koitoer    schedule 09.02.2017
comment
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.‹clinit›(PoolingOptions.java:146) ~[cassandra-driver-core-3.1.3.jar:na] - person venkat g; 09.02.2017
comment
Смотрите мое обновление, вы должны использовать guava 16.01 в качестве скомпилированной точки версии, любая другая версия вызовет конфликты - person Koitoer; 09.02.2017