【问题标题】:VSCode, Gradle, Spring Boot, Can't import javax.validationVSCode,Gradle,Spring Boot,无法导入 javax.validation
【发布时间】:2026-01-13 01:40:02
【问题描述】:

全部。
我想在 spring boot(2.3.0) 框架中使用 @Valid 和 @NotEmpty。
但是我无法导入javax.validation,所以我不能。
这是我目前遇到的屏幕和build.gradle 文件:

  1. 不能使用@Valid注解
  2. 不能使用@NotEmpty注解

plugins {
    id 'org.springframework.boot' version '2.3.0.RELEASE'
    id 'io.spring.dependency-management' version '1.0.9.RELEASE'
    id 'java'
}

group = 'kr.co.fastcampus'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

configurations {
    developmentOnly
    runtimeClasspath {
        extendsFrom developmentOnly
    }
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    //  Spring Boot
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-validation'

    //  Database
    implementation 'com.h2database:h2'

    compileOnly 'org.projectlombok:lombok'

    developmentOnly 'org.springframework.boot:spring-boot-devtools'

    annotationProcessor 'org.projectlombok:lombok'

    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

test {
    useJUnitPlatform()
}

【问题讨论】:

  • 可能是 gradle 没有正确同步。尝试重建您的项目,右键单击项目 -> 构建模块 .

标签: java spring-boot spring-annotations


【解决方案1】:

我带着同样的问题来到这里,但我的问题是我忘记将这一行添加到 build.gradle。

implementation('org.springframework.boot:spring-boot-starter-validation')

我知道这不是你的问题,但我只是在这里发布这个问题,以供那些像我一样面临同样问题并偶然发现这个问题的人使用。

【讨论】:

    【解决方案2】:

    可能是 gradle 缓存的问题。

    确保您在 gradle-wrapper.properties 中使用正确的 gradle 版本:

    distributionUrl=https\://services.gradle.org/distributions/gradle-6.4.1-bin.zip
    

    然后进行重建。检查您是否在构建过程中遇到任何错误。这里的一切都应该是绿色的:

    我使用了相同的 build.gradle 文件(您提供了该文件),@Valid 和 @NonEmpty 注释都可以正常工作。

    【讨论】:

    • 嗨,阿比纳巴。感谢您尽快回复。这是 gradle-wrapper.properies:我认为 distributionUrl 与您的相同。 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-6.4.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists
    • 好酷。请尝试重建,看看它是否对你来说都是“绿色”的。
    • 你介意用 VSCode 解释一下吗?您的捕获图像看起来像您分享给我的 IntelliJ 环境。但是,我需要使用 VSCode 来制作项目。而且我不擅长用VSCode制作java项目。
    • @ChangjooSohn 请检查一下并尝试运行构建:syncfusion.com/ebooks/gradle_succinctly/…
    【解决方案3】:

    要使用 bean 验证 (Javax.validation),在大多数情况下,您还需要一个实现。你可以把 javax.validation 包想象成一个接口,它只包含验证 API,但它们必须通过另一个包来实现。

    这曾经是 hibernate.validator,但现在已弃用。

    说到已弃用,整个 javax 库模块在最新版本中已弃用。这包括 json 库、jax-rs 和 jax-ws 库以及许多其他库。

    话虽如此,并注意到他使用了不再有效的旧 hibernate 包(在那里做过,你不知道我刚刚救了你的头疼),然后here 是关于这个主题的一个很好的教程.他像大多数 Spring Boot 项目一样使用 maven,但您可以非常简单地对其进行调整以用于 gradle。

    对于实现包,谷歌“bean 验证器实现 2020”。那应该可以解决。

    【讨论】:

    • @Changjoo Sohn 您目前正在使用 spring boot starter 验证器,它在后台使用 hibernate 包。我警告你,你会头疼的!!