Spring Boot 1.5.x with Spring Data Cassandra 1.5.x 与 Cassandra 2.1 不兼容

Posted

技术标签:

【中文标题】Spring Boot 1.5.x with Spring Data Cassandra 1.5.x 与 Cassandra 2.1 不兼容【英文标题】:Spring Boot 1.5.x with Spring Data Cassandra 1.5.x is incompatible with Cassandra 2.1 【发布时间】:2018-01-16 10:21:36 【问题描述】:

我正在尝试使用 Cassandra 2.1 升级到带有 Spring Data Cassandra 1.5.x 的 Spring Boot 1.5,但出现启动错误:

实例化失败 [org.springframework.data.cassandra.mapping.CassandraMappingContext]: 工厂方法“cassandraMapping”抛出异常;嵌套异常是 java.lang.NoClassDefFoundError: com/datastax/driver/core/DataType$CollectionType

卡桑德拉详情:

[cqlsh 5.0.1 |卡桑德拉 2.1.15.1403 | DSE 4.8.9 | CQL 规范 3.2.1 | 原生协议 v3]

如何升级到 Spring Boot 1.5?

编辑:有没有办法在我的 pom.xml 中使用 Spring Boot Dependencies 1.5 作为父级,但保留 Spring Data Cassandra 1.4

【问题讨论】:

您觉得我的回答有帮助吗? 是的,但也许我没有问对问题。有没有办法在我的 pom.xml 中使用 Spring Boot Dependencies 1.5 作为父级但保留 Spring Data Cassandra 1.4?我编辑了我的问题以反映这一变化。 如果我的回答有帮助,请放弃。谈到您的另一个问题,是的,您可以单独为 Cassandra 定义 Spring 数据并为其提供版本。给我看看你的 XML。 【参考方案1】:

这意味着您要查找的类没有任何定义,因为预期的 jar 中缺少该类。您正在为 Cassandra 使用 Spring data 1.5 的高级版本并尝试连接到 2.1.15,这仅与 Spring data 1.4 兼容。

您可以继续使用 Spring data 1.4,也可以考虑将 Cassandra 从 2.1 切换到 3.1.3

Spring Data Cassandra 1.5 发布,内部使用 Cassandra java driver 3.1.3

参考:https://docs.spring.io/spring-data/cassandra/docs/1.5.6.RELEASE/reference/html/

【讨论】:

【参考方案2】:

您可以为 Cassandra 使用以下依赖项。

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-cassandra</artifactId>
    <version>1.4.11.RELEASE</version>
</dependency>

【讨论】:

以上是关于Spring Boot 1.5.x with Spring Data Cassandra 1.5.x 与 Cassandra 2.1 不兼容的主要内容,如果未能解决你的问题,请参考以下文章

再见 Spring Boot 1.X ,Spring Boot 2.X 走向舞台中心

Spring Boot 1.5.x 与 Hibernate 4.x 的兼容性

Spring Security with Boot

RSS Feeds with Spring Boot

《Pro Spring Boot 2》第四章:Web Applications with Spring Boot

《Pro Spring Boot 2》第五章:Data Access with Spring Boot