SpringBoot 2.6.1 与 Querydsl Mongodb 不兼容?
Posted
技术标签:
【中文标题】SpringBoot 2.6.1 与 Querydsl Mongodb 不兼容?【英文标题】:SpringBoot 2.6.1 incompatibility with Querydsl Mongodb? 【发布时间】:2022-01-13 12:45:39 【问题描述】:我正在将 Java 11 (SpringBoot 2.4.1) 应用程序升级到 Java 17 和 Spring 2.6.1。
在使用 SpringBoot 2.4.1 时,我有以下依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
...
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>$querydsl.version</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-mongodb</artifactId>
<version>$querydsl.version</version>
</dependency>
$querydsl.version
由 SpringBoot 依赖管理管理。
但是当升级到 SpringBoot 2.6.1 时,我遇到了这种不兼容问题:
spring-boot-starter-data-mongodb
带来mongodb-driver-core/4.4.0
querydsl-mongodb
带来mongo-java-driver/3.12.8
我得到这个错误:
The called method's class, com.mongodb.connection.ClusterSettings, is available from the following locations:
jar:file:/C:/Users/SXBN9329/.m2/repository/org/mongodb/mongodb-driver-core/4.4.0/mongodb-driver-core-4.4.0.jar!/com/mongodb/connection/ClusterSettings.class
jar:file:/C:/Users/SXBN9329/.m2/repository/org/mongodb/mongo-java-driver/3.12.8/mongo-java-driver-3.12.8.jar!/com/mongodb/connection/ClusterSettings.class
Action:
Correct the classpath of your application so that it contains compatible versions of the classes com.mongodb.connection.DefaultClusterFactory and com.mongodb.connection.ClusterSettings
有人有办法解决这个问题吗?
【问题讨论】:
查询DSL 5 should support MongoDB 4。您是否尝试过排除 3.12 驱动程序? @AndyWilkinson 我试过了,但没有成功。我已经找到原因了,我会发布答案。 【参考方案1】:我找到了原因:另一个模块依赖于spring-data-mongodb
。所以我同时拥有spring-data-mongodb
和spring-boot-starter-data-mongodb
。
这似乎不适用于 QueryDSL ^^
我已在另一个模块中将spring-data-mongodb
替换为spring-boot-starter-data-mongodb
,它现在可以工作了。
【讨论】:
以上是关于SpringBoot 2.6.1 与 Querydsl Mongodb 不兼容?的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 2.6.1 正式发布,2.4.x Game Over,2.5.0 成最低支持版本。。
升级到 Spring Boot 2.6.1 和 Spring Cloud 2021.0.0 后 Spring Cloud Stream 启动错误