java.lang.NoSuchMethodError:org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorContextImpl

java.lang.NoSuchMethodError:org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorContextImpl,java,gradle,jboss,wildfly,bean-validation,Java,Gradle,Jboss,Wildfly,Bean Validation,在自定义ConstraintValidator的代码中,我使用了这样的构造函数 new ConstraintValidatorContextImpl( new ArrayList<String>(), DefaultTimeProvider.getInstance(), PathImpl.createPathFromString(param),

在自定义ConstraintValidator的代码中,我使用了这样的构造函数

 new ConstraintValidatorContextImpl(
                    new ArrayList<String>(),
                    DefaultTimeProvider.getInstance(),
                    PathImpl.createPathFromString(param),
                    violation.getConstraintDescriptor());
new ConstraintValidatorContextImpl(
新建ArrayList(),
DefaultTimeProvider.getInstance(),
PathImpl.createPathFromString(参数),
violation.getConstraintDescriptor());
在运行时,这会导致错误

java.lang.NoSuchMethodError: org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorContextImpl(Ljava/util/List;Lorg/hibernate/validator/spi/time/TimeProvider;Lorg/hibernate/validator/internal/engine/path/PathImpl;Ljavax/validation/metadata/ConstraintDescriptor;)

我在build.gradle下面的依赖项中添加了一行

运行时'org.hibernate:hibernate验证程序:5.2.2.Final'


但是它没有帮助。

不需要构造函数,ConstraintValidatorContextImpl必须使用工厂构造

这就是解决方案:

context.buildConstraintViolationWithTemplate("message").addPropertyNode("field")‌​.addConstraintViolation();

通常,以Impl结尾的类必须用工厂构造。检查您是否在ConstraintValidatorContext中使用静态生成器:谢谢,这很有帮助。这就是解决方案:context.buildConstraintViolationWithTemplate(“消息”).addPropertyNode(“字段”).addConstraintViolation()@如果这解决了你的问题,请将你所做的作为回答,以防将来有人遇到同样的问题。