javax.validation.NoProviderFoundException:无法创建配置,因为找不到 Bean 验证提供程序

Posted

技术标签:

【中文标题】javax.validation.NoProviderFoundException:无法创建配置,因为找不到 Bean 验证提供程序【英文标题】:javax.validation.NoProviderFoundException: Unable to create a Configuration, because no Bean Validation provider could be found 【发布时间】:2021-12-29 19:59:07 【问题描述】:

即使添加到类路径中,也找不到 Hibernate Bean Validator。

我在 Spring Boot 中有一个简单的 Web 应用程序。我正在尝试使用这个简单的函数来测试 Hibernate Validator:

public void validateUser(User user) 
   ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
   Validator validator = factory.getValidator();
   Set<ConstraintViolation<User>> violations = validator.validate(user);

但它会引发异常: 。将像 Hibernate Validator (RI) 这样的提供程序添加到您的类路径中。

我尝试使用不同的库,但它们都不起作用。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<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>7.0.1.Final</version>
</dependency>

我正在使用 Java 17。

【问题讨论】:

***.com/a/66348372/11002 可能会有所帮助 无法复制。它应该只需要spring-boot-starter-validation 【参考方案1】:

对于 Spring Boot 项目,您需要添加 spring-boot-starter-validation 启动依赖项。

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

所有Spring Boot启动的项目都可以在官方文档中找到:spring.io

将新依赖项添加到 pom.xml 文件后,我建议运行 mwnv clean package(或 mvn clean package)来获取依赖项并构建一个干净的项目。

此外,对于引导/生成 Spring Boot 项目,您可能需要使用 Spring Initializr

【讨论】:

以上是关于javax.validation.NoProviderFoundException:无法创建配置,因为找不到 Bean 验证提供程序的主要内容,如果未能解决你的问题,请参考以下文章