我正在使用具有以下版本/依赖项的休眠验证器:
<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。(如果是这样,我也会看到它们加载到日志中,不是吗?)
有什么帮助吗?