在 quarkus 应用程序中使用 Validation.buildDefaultValidatorFactory() 实例化 Validator 时没有提供程序异常?

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

我使用自定义 api 进行验证,在基于 quarkus 的应用程序中通过 Validation.buildDefaultValidatorFactory().getValidator() 实例化验证器,但应用程序抛出 NoProviderFoundException 并显示以下错误消息


Caused by: javax.validation.NoProviderFoundException: Unable to create a Configuration, because no Bean Validation provider could be found. Add a provider like Hibernate Validator (RI) to your classpath.
    at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:291)
    at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:103)

Quarkus 默认情况下有 Hibernate Validator,但是在我的 quarkus 应用程序版本 3.4.1 中(Hibernate Validator-8.0.1-Final 是 quarkus 默认添加的依赖库),Hibernate Validator 没有正确实例化

我已经使用旧版 quarkus 2.8.2 运行了相同的应用程序,并且它实例化了 Hibernate Validator,没有出现问题

使用以下日志确认 Hibernate 验证器

INFO  [org.hib.val.int.uti.Version] (Quarkus Main Thread) HV000001: Hibernate Validator 6.2.3.Final

我需要正确实例化 Hibernate Validator 才能运行我的应用程序。请帮我解决这个问题。

kotlin quarkus hibernate-validator
1个回答
0
投票

这表明滥用:

javax.validation

您没有使用正确版本的 Bean Validation。正确的版本使用以

jakarta.validation
开头的包。请参阅https://github.com/quarkusio/quarkus/wiki/Migration-Guide-3.0#jakarta-ee-10

您需要使用 Jakarta Validation (

jakarta.validation:jakarta.validation-api
),并与 Quarkus 提供的版本保持一致(对于 Quarkus 3.4.1
3.0.2
)。

我还建议使用自动化工具迁移到 Quarkus 3,请参阅 https://github.com/quarkusio/quarkus/wiki/Migration-Guide-3.0#automatic-update-tool

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