plugins {
id 'org.springframework.boot' version '2.6.6'
id "com.ewerk.gradle.plugins.querydsl" version '1.0.10' }
configurations {
compileOnly {
extendsFrom annotationProcessor
} }
repositories {
mavenCentral() }
ext {
queryDslVersion = "5.0.0" }
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
//for querydsl
implementation "com.querydsl:querydsl-mongodb:${queryDslVersion}"
annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}" }
tasks.named('test') {
useJUnitPlatform() }
def querydslDir = "$buildDir/generated/querydsl"
querydsl {
springDataMongo = true
querydslSourcesDir = querydslDir }
sourceSets {
main.java.srcDir querydslDir }
configurations {
querydsl.extendsFrom compileClasspath }
compileQuerydsl {
options.annotationProcessorPath = configurations.querydsl }
错误:
应用程序启动失败
描述:
尝试调用不存在的方法。尝试从以下位置进行:
com.mongodb.client.internal.MongoClientImpl.createCluster(MongoClientImpl.java:219)
下面的方法不存在:
'com.mongodb.ServerApi com.mongodb.MongoClientSettings.getServerApi()'
调用方法的类com.mongodb.client.internal.MongoClientImpl可从以下位置获得:
jar:file:~/.gradle/caches/modules-2/files-2.1/org.mongodb/mongodb-driver-sync/4.4.2/~/mongodb-driver-sync-4.4.2.jar!/com/mongodb/client/internal/MongoClientImpl.class
jar:file:~/.gradle/caches/modules-2/files-2.1/org.mongodb/mongo-java-driver/3.12.8/~/mongo-java-driver-3.12.8.jar!/com/mongodb/client/internal/MongoClientImpl.class
调用方法的类是从以下位置加载的:
file:~/.gradle/caches/modules-2/files-2.1/org.mongodb/mongodb-driver-sync/4.4.2/~/mongodb-driver-sync-4.4.2.jar
被调用方法的类,com.mongodb。MongoClientSettings,可从以下位置获得:
jar:file:~/.gradle/caches/modules-2/files-2.1/org.mongodb/mongo-java-driver/3.12.8/~/mongo-java-driver-3.12.8.jar!/com/mongodb/MongoClientSettings.class
jar:file:~/.gradle/caches/modules-2/files-2.1/org.mongodb/mongodb-driver-core/4.4.2/~/mongodb-driver-core-4.4.2.jar!/com/mongodb/MongoClientSettings.class
被调用方法的类层次结构是从以下位置加载的:
com.mongodb.MongoClientSettings: file:~/.gradle/caches/modules-2/files-2.1/org.mongodb/mongo-java-driver/3.12.8/~/mongo-java-driver-3.12.8.jar
行动:
纠正应用程序的类路径,使其包含类com.mongodb.client.internal.MongoClientImpl和com.mongodb.MongoClientSettings的兼容版本
- 请帮帮我,我不能使用spring-data-starter-mongodbQueryDsl吗?
com.querydsl:querydsl-mongodb:5.0.0
提供了一个过时的依赖项org.mongodb:mongo-java-driver:3.12
。
你应该用mongodb-driver-core
代替mongo-java-driver
(由spring-boot-starter-data-mongodb
自动提供)。你可以在这里找到更多的细节:https://github.com/querydsl/querydsl/issues/3134
所以,你可以简单地替换
implementation "com.querydsl:querydsl-mongodb:${queryDslVersion}"
:
implementation('com.querydsl:querydsl-mongodb') {
exclude group: 'org.mongodb', module: 'mongo-java-driver'
}
这将阻止querydsl-mongodb
使用旧的驱动程序。