VSCode、Gradle、Spring 启动,无法导入 javax.validation
VSCode, Gradle, Spring Boot, Can't import javax.validation
全部。
我想在 spring boot(2.3.0) 框架中使用 @Valid 和 @NotEmpty。
但是我无法导入 javax.validation
所以我不能。
这是我当前遇到的屏幕和 build.gradle
文件:
- 不能使用@Valid注解
- 不能使用@NotEmpty 注解
<文件:build.gradle>
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 缓存有问题。
确保您在 gradle-wrapper.properties 中使用正确的 gradle 版本:
distributionUrl=https\://services.gradle.org/distributions/gradle-6.4.1-bin.zip
然后重建。检查您在构建过程中是否遇到任何错误。这里的一切都应该是绿色的:
我使用了相同的 build.gradle 文件(您提供的),@Valid 和 @NonEmpty 注释都工作正常。
我带着同样的问题来到这里,但我的问题是我忘记将这一行添加到 build.gradle。
implementation('org.springframework.boot:spring-boot-starter-validation')
我知道这不是你的问题,但只是将此发布在这里,供与我一样面临相同问题并偶然发现这个问题的其他人使用。
要使用 bean 验证 (Javax.validation),在大多数情况下您还需要一个实现。你可以把 javax.validation 包想象成一个接口,它只包含验证 api,但它们必须通过另一个包来实现。
这曾经是 hibernate.validator,但现在已弃用。
说到弃用,整个 javax 库模块在最新版本中已弃用。这包括 json 库、jax-rs 和 jax-ws 库以及许多其他库。
话虽如此,并注意到他使用了不再有效的旧休眠包(在那里做过,你不知道我刚刚救了你的头痛),然后 here 很棒关于这个主题的教程。他像大多数 spring 引导项目一样使用 maven,但您可以非常简单地针对 gradle 调整它。
对于实施包,google“bean 验证器实施 2020”。那应该可以解决。
全部。
我想在 spring boot(2.3.0) 框架中使用 @Valid 和 @NotEmpty。
但是我无法导入 javax.validation
所以我不能。
这是我当前遇到的屏幕和 build.gradle
文件:
- 不能使用@Valid注解
- 不能使用@NotEmpty 注解
<文件:build.gradle>
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 缓存有问题。
确保您在 gradle-wrapper.properties 中使用正确的 gradle 版本:
distributionUrl=https\://services.gradle.org/distributions/gradle-6.4.1-bin.zip
然后重建。检查您在构建过程中是否遇到任何错误。这里的一切都应该是绿色的:
我使用了相同的 build.gradle 文件(您提供的),@Valid 和 @NonEmpty 注释都工作正常。
我带着同样的问题来到这里,但我的问题是我忘记将这一行添加到 build.gradle。
implementation('org.springframework.boot:spring-boot-starter-validation')
我知道这不是你的问题,但只是将此发布在这里,供与我一样面临相同问题并偶然发现这个问题的其他人使用。
要使用 bean 验证 (Javax.validation),在大多数情况下您还需要一个实现。你可以把 javax.validation 包想象成一个接口,它只包含验证 api,但它们必须通过另一个包来实现。
这曾经是 hibernate.validator,但现在已弃用。
说到弃用,整个 javax 库模块在最新版本中已弃用。这包括 json 库、jax-rs 和 jax-ws 库以及许多其他库。
话虽如此,并注意到他使用了不再有效的旧休眠包(在那里做过,你不知道我刚刚救了你的头痛),然后 here 很棒关于这个主题的教程。他像大多数 spring 引导项目一样使用 maven,但您可以非常简单地针对 gradle 调整它。
对于实施包,google“bean 验证器实施 2020”。那应该可以解决。