Spring:Java:包javax.validation.constraints不存在。

39

我已经在我的pom.xml文件中有这个依赖项。

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

我已经刷新了Maven并重新启动了IntelliJ,但仍然收到这个错误:java:package javax.validation.constraints does not exist

出现这种情况是因为它找不到该包。

但只有在我尝试编译时才会出现此错误。

在我的实体类中,我导入了import javax.validation.constraints.Size;

并且想要添加一个注释到列上,例如:

@Size(min = 1)
private String name;
或者
@DecimalMin("0.01")
private BigDecimal amount;

但总是遇到验证包的问题。

在IDE中没有错误消息,只有在运行时才出现错误。


如果你通过终端运行mvn clean spring-boot:repackage编译项目,你会得到相同的结果吗? - Marco
5个回答

40

38

我在我的Spring应用程序中这样使用它,它有效地工作。

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.1.0.Final</version>
</dependency>

5
请注意,现在是 jakarta.validation-api。 - AbstractVoid

13

Jakarta Bean Validation API 是推荐使用的依赖项,可以导入并解决这个问题:

Maven

<dependency>
    <groupId>jakarta.validation</groupId>
    <artifactId>jakarta.validation-api</artifactId>
    <version>2.0.2</version>
</dependency>

Gradle

implementation 'jakarta.validation:jakarta.validation-api:2.0.2'

1
我测试了添加这个依赖项,但不幸的是它似乎没有解决我的问题。 - hreinn
1
经过进一步的审查,似乎javax.validation依赖项在版本“2.0.2”中已解决,但在“3.0.2”中未解决。 - hreinn
1
@hreinn,要获取版本为3.0.2的validation-api,请使用链接中的依赖项(https://mvnrepository.com/artifact/jakarta.validation/jakarta.validation-api/3.0.2)。如果依赖项无法解析,请尝试强制构建项目或从本地maven存储库中删除依赖项,因为它可能已损坏,然后再次运行构建。 - Guilherme Silva Sousa
在我的情况下,使用您链接中的3.0.2依赖似乎没有帮助,但降级到2.0.2似乎是有效的。 - Ole V.V.

7

对于Gradle用户,请将以下依赖项添加到build.gradle文件中:

implementation 'javax.validation:validation-api:2.0.1.Final'

3
你需要更改你的导入方式。

javax.validation.constraints.NotNull;

转换为

import jakarta.validation.constraints.NotNull;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接