升级springboot-starter-parent至3.7.5后出现javax.validation包不存在问题
Spring Boot 3.7.5升级后javax.validation编译错误解决方案
问题原因
Spring Boot 3.x版本基于Jakarta EE 9规范,所有原javax.*前缀的Java EE API已全部迁移至jakarta.*命名空间,包括JSR-380校验框架的javax.validation包,因此你项目中仍使用javax.validation相关类会导致包找不到的编译错误。
解决步骤
替换Java类中的导入路径
把所有Java文件里的import javax.validation.*替换为jakarta.validation.*,以你的ValidateParamValue.java为例:
原导入:import javax.validation.Constraint; import javax.validation.Payload;修改后:
import jakarta.validation.Constraint; import jakarta.validation.Payload;所有涉及
javax.validation的类(比如ConstraintValidator等)都需要同步替换包路径。调整依赖配置
Spring Boot 3.x提供了适配Jakarta的校验starter,无需手动引入旧版的hibernate-validator或javax.validation-api。确保你的Maven/Gradle依赖中只保留:
Maven:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>Gradle:
implementation 'org.springframework.boot:spring-boot-starter-validation'若之前手动添加过
javax.validation-api或旧版hibernate-validator,请直接删除这些依赖,避免版本冲突。清理并重新编译项目
执行清理命令清除旧的编译产物,再重新构建:
Maven:mvn clean installGradle:
./gradlew clean build
内容的提问来源于stack exchange,提问作者Karan Thakur
相关产品推荐
相关产品推荐

