Spring Boot 3.0编译报错:package javax.validation does not exist 如何解决?
解决Spring Boot 3.0.1中
javax.validation does not exist编译错误 问题原因
Spring Boot 3.x 基于 Jakarta EE 9+ 规范,所有原Java EE体系下的javax.*包名已统一迁移至jakarta.*,Bean Validation(参数校验)相关的API也随之迁移,因此原代码中依赖的javax.validation包在Spring Boot 3环境下不再存在。
解决步骤
替换代码中的包导入
将所有代码里的import javax.validation.*替换为import jakarta.validation.*。比如你示例中的@Valid注解,需要从javax.validation.Valid改为jakarta.validation.Valid,修改后的方法代码:public String generateOtp(@Valid TotpAuthenticatorForm form, BindingResult bindingResult)确认依赖版本
Spring Boot 3.x的spring-boot-starter-validation依赖已默认使用Jakarta版本,确保你的项目构建文件中引入的是正确的starter:- Maven项目(pom.xml):
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> - Gradle项目(build.gradle):
implementation 'org.springframework.boot:spring-boot-starter-validation'
- Maven项目(pom.xml):
清理并重新构建项目
执行构建工具的清理命令清除缓存,再重新编译:- Maven:
mvn clean install - Gradle:
gradle clean build
- Maven:
同步自定义校验代码
若项目中有自定义的校验器、约束注解等Bean Validation相关代码,需同步将所有javax.validation相关的包引用替换为jakarta.validation,比如ValidatorFactory、ConstraintViolation等类的导入。
内容的提问来源于stack exchange,提问作者Boris
相关产品推荐
相关产品推荐

