You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法为Jakarta Persistence实体配置Querydsl,编译报错求助

解决Querydsl适配Jakarta Persistence时的javax.persistence.Entity找不到问题

问题根源

你遇到的java.lang.NoClassDefFoundError: javax/persistence/Entity错误,本质是Querydsl的注解处理器(APT)仍在尝试查找旧的JPA(javax.persistence)注解,但你的实体类使用的是Jakarta Persistence(jakarta.persistence)的注解。虽然你引入了Jakarta版本的Querydsl依赖,但旧的com.ewerk.gradle.plugins.querydsl插件默认配置的是针对javax的APT处理器,没有适配Jakarta生态。


解决方案

方案1:适配现有ewerk插件(快速修复)

修改Gradle配置,强制指定Jakarta版本的APT处理器类:

  1. 更新compileQuerydsl任务配置
    在build.gradle中修改compileQuerydsl块:
compileQuerydsl {
    options.annotationProcessorPath = configurations.querydsl
    // 指定Jakarta专属的Querydsl JPA处理器
    options.compilerArgs += ["-processor", "com.querydsl.jpa.JPABaseProcessor"]
}
  1. 修正Querydsl插件配置
    明确指定处理器类:
querydsl {
    jpa = true
    querydslSourcesDir = queryDslSourceDirectory
    processor = 'com.querydsl.jpa.JPABaseProcessor'
}
  1. 清理缓存并重新构建
    执行命令清理旧生成文件和Gradle缓存:
./gradlew clean compileQuerydsl build

方案2:改用官方原生Gradle配置(推荐,长期维护)

旧的ewerk插件已停止维护,建议直接用Gradle原生注解处理器配置,移除第三方插件依赖:

  1. 移除ewerk插件引用
    删除build.gradle中以下两行:
// id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'
// apply plugin: 'com.ewerk.gradle.plugins.querydsl'
  1. 添加原生Querydsl生成任务
    添加以下配置到build.gradle:
def queryDslSourceDirectory = 'src/querydsl/java/generated'

// 把生成的Querydsl类加入源码集
sourceSets {
    main {
        java {
            srcDir queryDslSourceDirectory
        }
    }
}

// 配置Querydsl APT生成任务
task generateQuerydsl(type: JavaCompile) {
    source = sourceSets.main.java
    classpath = sourceSets.main.compileClasspath
    options.annotationProcessorPath = configurations.annotationProcessor
    // 指定Jakarta处理器和生成目录
    options.compilerArgs = [
        "-processor", "com.querydsl.jpa.JPABaseProcessor",
        "-s", queryDslSourceDirectory
    ]
    destinationDir = file("$buildDir/classes/java/generated")
}

// 让编译任务依赖Querydsl生成任务
compileJava.dependsOn(generateQuerydsl)
  1. 确认依赖配置
    确保依赖中只保留必要的Jakarta版本Querydsl包:
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    // Querydsl核心库
    implementation 'com.querydsl:querydsl-core:5.1.0'
    // Jakarta版JPA支持
    implementation 'com.querydsl:querydsl-jpa:5.1.0:jakarta'
    // Jakarta版APT注解处理器
    annotationProcessor 'com.querydsl:querydsl-apt:5.1.0:jakarta'
}
  1. 重新构建
    执行清理和构建命令:
./gradlew clean build

内容的提问来源于stack exchange,提问作者Ravindra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 22:53:13