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

javax.validation.constraints.NotBlank导入报无法解析符号validation问题

问题描述

Spring Boot项目开发中需使用@NotBlank参数校验注解,添加javax.validation相关依赖后,javax.validation.constraints.NotBlank导入语句无法识别,IDE报错:Cannot resolve symbol 'validation'(无法解析符号'validation')。

现有配置

pom.xml 依赖片段

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

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

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
</dependency>

实体类代码

package com.educative.ecommerce.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.validation.constraints.NotBlank;

@Entity
@Table(name = "categories")
public class Category {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(name = "category_name")
    private @NotBlank String categoryName;

    private @NotBlank String description;

    private @NotBlank String imageUrl;
}
问题根因
  1. Spring Boot 2.3.x及以上版本,已将Bean Validation相关依赖从spring-boot-starter-web中默认移除,不会自动引入校验相关组件。
  2. 单独引入javax.validation:validation-api仅包含校验注解的接口定义,缺少对应的实现包,且未通过Spring Boot官方依赖管理机制管控的话,容易出现版本不匹配、依赖无法正常拉取识别的问题。
修复步骤
  • 删除pom.xml中单独引入的javax.validation:validation-api依赖。
  • 替换引入Spring Boot官方提供的validation starter,该依赖会自动关联匹配当前Spring Boot版本的校验API、hibernate-validator实现,项目如果继承了spring-boot-starter-parent无需手动指定版本,未继承的话补充和当前Spring Boot一致的版本号即可:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>
  • 保存pom.xml后,执行IDE的Maven依赖刷新操作:IDEA点击右侧Maven面板的刷新按钮,Eclipse右键项目选择Maven -> Update Project,强制拉取更新依赖。
  • 若使用Spring Boot 3.x及以上版本,javax命名空间已全部迁移至jakarta,需将所有javax.validation开头的导入替换为jakarta.validation开头,即@NotBlank的导入路径改为import jakarta.validation.constraints.NotBlank;。
额外注意

现有实体类中@GeneratedValue(strategy = GenerationType.IDENTITY)使用的GenerationType类未显式导入,依赖问题修复后需补充对应导入语句(Spring Boot 2.x导入javax.persistence.GenerationType,3.x导入jakarta.persistence.GenerationType),避免出现新的编译错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:42:19