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

升级至Spring Boot 2.7.18后javax.validation编译报错,如何解决?

问题原因与解决方法

为什么会出现这些错误?

  1. 依赖默认移除:Spring Boot 2.3及后续版本里,spring-boot-starter-web不再自动包含校验相关的依赖包,而你之前用的2.0.4版本是默认带的。升级到2.7.18后,没手动加校验依赖,自然找不到javax.validation相关类。
  2. API包名过渡:2.7是Spring Boot向3.x(全面改用Jakarta EE API)过渡的版本,默认的spring-boot-starter-validation已经引入jakarta.validation.*的API,而你的代码还在用旧的javax.validation.*路径,这也会导致编译报错。

怎么解决?

第一步:补上校验依赖

在pom.xml里明确添加spring-boot-starter-validation依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

第二步:处理包名问题(二选一)

方案一:临时兼容旧代码(不修改import)

如果不想立刻改代码里的包路径,可以引入旧版的校验API和实现来兼容:

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.2.5.Final</version>
</dependency>

提示:这只是过渡方案,最终迁Spring Boot 3时还是得换成jakarta.validation包。

方案二:直接迁到Jakarta包(推荐,为3.x做准备)

把代码里所有javax.validation.*的import都改成jakarta.validation.*,比如:

  • import javax.validation.constraints.NotNull; → import jakarta.validation.constraints.NotNull;
  • import javax.validation.Valid; → import jakarta.validation.Valid;
  • 其他像ValidationException、Validator这类相关类也同步替换

第三步:验证修复

做完上面的操作后,重新执行mvn clean install,确认编译错误消失即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 10:11:09