Spring Boot 3+Querydsl 5.0.0 Gradle构建报错:无法加载jakarta.persistence.Entity
解决Spring Boot 3.1.4 + QueryDSL 5.0.0构建报错
NoClassDefFoundError: jakarta/persistence/Entity 问题原因
编译阶段QueryDSL的APT注解处理器找不到JPA的Entity注解类,核心原因有两点:
querydsl-apt被错误配置为implementation依赖,它仅需作为注解处理器使用,无需加入项目编译依赖- 注解处理器的classpath与项目编译classpath相互独立,
spring-boot-starter-data-jpa中的JPA API依赖无法自动传递到注解处理器环境中
解决方案
修改build.gradle的依赖配置如下:
plugins { id 'java' id 'org.springframework.boot' version '3.1.4' } java { sourceCompatibility = '17' } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' // 仅保留注解处理器配置,移除implementation类型的querydsl-apt annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jakarta' // 显式将JPA API加入注解处理器classpath annotationProcessor 'jakarta.persistence:jakarta.persistence-api' }
修改说明
- 移除
implementation 'com.querydsl:querydsl-apt:5.0.0:jakarta':APT是生成QueryDSL查询类的工具,无需作为项目编译或运行依赖 - 添加
annotationProcessor 'jakarta.persistence:jakarta.persistence-api':确保注解处理器在编译时能访问到JPA相关注解类 - 保留
querydsl-jpa的implementation依赖:这是项目运行和编译时必需的QueryDSL JPA核心库
内容的提问来源于stack exchange,提问作者user22824900
相关产品推荐
相关产品推荐

