由于 java.lang.NoSuchMethodError,hibernate 验证器无法构建

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

我试图将 quarkus 从 1.x 升级到 3.6.3

在3.6.3中我必须引入依赖项

'io.quarkus:quarkus-hibernate-validator'
来支持
jakarta.validation.constraints.*

然后我得到了这个构建错误:

java.lang.RuntimeException: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
    [error]: Build step io.quarkus.hibernate.validator.deployment.HibernateValidatorProcessor#beanValidationAnnotations threw an exception: java.lang.NoSuchMethodError: 'java.util.Set org.hibernate.validator.internal.metadata.core.ConstraintHelper.getBuiltinConstraints()'
    at io.quarkus.hibernate.validator.deployment.HibernateValidatorProcessor.beanValidationAnnotations(HibernateValidatorProcessor.java:176)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:849)
    at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
    at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
    at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
    at java.base/java.lang.Thread.run(Thread.java:840)
    at org.jboss.threads.JBossThread.run(JBossThread.java:501)

    at io.quarkus.test.junit.QuarkusTestExtension.throwBootFailureException(QuarkusTestExtension.java:638)
    at io.quarkus.test.junit.QuarkusTestExtension.interceptTestClassConstructor(QuarkusTestExtension.java:722)
    at java.base/java.util.Optional.orElseGet(Optional.java:364)
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)

在我的 API 定义中,我注意到验证应用于

@NotNull @Valid Set<Long> requestBody
(由 OpenAPI 生成)。我不确定该错误是否意味着 hibernate 找不到
Set
类的任何验证器?

java hibernate quarkus nosuchmethoderror jakarta-migration
1个回答
0
投票

Hibernate 验证器存在传递依赖。当我将其从 gradle 构建中排除后,问题就解决了。

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