休眠验证器 java.lang.NoClassDefFoundError:无法初始化类 org.hibernate.validator.internal.engine.ConfigurationImpl

ker*_*__m 6 java validation hibernate-validator

我已经阅读了thisthis,但这并没有帮助......

我正在使用具有以下版本/依赖项的休眠验证器:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>5.4.1.FINAL</version>
</dependency>
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.1.0.Final</version>
</dependency>
<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.el</artifactId>
    <version>3.0.1-b08</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我以为我做的一切都是正确的,我的日志(以 verbose:class 作为标志)告诉我:

[从文件加载 org.hibernate.validator.internal.engine.ConfigurationImpl:.../hibernate-validator-5.4.1.Final.jar]

[从文件加载 javax.validation.Validation:.../validation-api-1.1.0.Final.jar]

但稍后在运行时,当我使用

Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Run Code Online (Sandbox Code Playgroud)

我得到经典错误:

java.lang.NoClassDefFoundError: 无法初始化类 org.hibernate.validator.internal.engine.ConfigurationImpl

我还尝试降级到 hibernate-validator 4.3.1 和 javax.validation-api 1.0.0,但奇怪的是错误仍然相同。

我在这个项目中有很多其他依赖项(例如 Spring 等),但据我所知,没有一个使用 hibernate-validator 或 javax 验证 api。(如果是这样,我也会看到它们加载到日志中,不是吗?)

有什么帮助吗?

Gui*_*met 0

我怀疑 javax.el 的多个实现。这通常就是导致此类问题的原因。

检查您是否有其他名称不同的人。

如果不是这样,请在 ConfigurationImpl 构造函数中添加一个检查点并检查失败的原因。