Spring Boot 3 添加 OpenAPI 依赖后 NoProviderFoundException

问题描述 投票:0回答:2

例外:-

jakarta.validation.NoProviderFoundException:无法创建 配置,因为没有 Jakarta Bean Validation 提供程序可以 成立。将 Hibernate Validator (RI) 之类的提供程序添加到您的类路径中。 在 jakarta.validation.Validation$GenericBootstrapImpl.configure(Validation.java:291) ~[jakarta.validation-api-3.0.2.jar:na] 在 jakarta.validation.Validation.buildDefaultValidatorFactory(Validation.java:103) ~[jakarta.validation-api-3.0.2.jar:na] 在 org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:479) 〜[hibernate-core-6.1.6.Final.jar:6.1.6.Final] 在 org.hibernate.cfg.beanvalidation.TypeSafeActivator.activate(TypeSafeActivator.java:82) 〜[hibernate-core-6.1.6.Final.jar:6.1.6.Final] 在 ......

....org.springframework.boot.SpringApplication.run(SpringApplication.java:308) 〜[spring-boot-3.0.2.jar:3.0.2] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1302) 〜[spring-boot-3.0.2.jar:3.0.2] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1291) 〜[spring-boot-3.0.2.jar:3.0.2] 在 com.spring.security.MicroServiceServer1Application.main(MicroServiceServer1Application.java:10) 〜[班级/:na]在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机 方法)~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) 〜[娜:娜]在 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 〜[娜:娜]在 java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] 在 org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) 〜[spring-boot-devtools-3.0.2.jar:3.0.2]org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:137)

Maven 依赖关系:-

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

        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
            <version>2.0.2</version>
        </dependency>
    
    
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    
 ...

我必须记录我的 api,所以我添加了 OpenAPI,我的 Spring boot 项目是 Spring Boot 3。 所以我添加了它,它抛出了 NoProviderFoundException 但 OpenAPI 工作正常,但我不明白为什么它会出现,所以我在每个地方搜索了很多次,但我没有得到答案。

请有了解的请回复。

还有

我也添加了雅加达验证,但仍然出现异常

依赖性:-

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

*** 谢谢你***

spring spring-boot jakarta-ee openapi spring-boot-maven-plugin
2个回答
7
投票

不要添加

jakarta.validation-api
作为依赖项,而是尝试
spring-boot-starter-validation

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

0
投票

我也遇到了这个错误,最终通过将验证 jar 从 2.X 更新到 3.0 解决了该错误,因为我的项目是从 spring boot 3.X 构建的。验证工具可以在https://beanvalidation.org/3.0/中找到。

© www.soinside.com 2019 - 2024. All rights reserved.