我正在使用具有以下版本/依赖项的hibernate验证器:
<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>
我以为我正在做的一切正确,我的日志(用详细的:类作为标志)告诉我:
[从文件中加载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();
我得到了经典错误:
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。 (如果是这种情况,我也会看到它们被加载到日志中,不是吗?)
有什么帮助吗?
我在使用JSR 303 bean验证时遇到了同样的问题我在下面添加了两个jar(以及validation-api-1.1.0.final.jar和hibernate-validator-5.0.1.final.jar)并且问题得到了解决
我怀疑javax.el的多个实现。这通常是造成这类问题的原因。
检查您是否有另一个名称不同的人。
如果不是这样,请在ConfigurationImpl构造函数中添加一个检查点,并检查哪些内容失败。
试试这个配置:
<properties>
<hibernate.version>4.3.11.Final</hibernate.version>
</properties>
<dependencies>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<!-- jsr303 validation -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.1.3.Final</version>
</dependency>
</dependencies>
完整的example ..
首先,使用mvn dependency:tree
检查所有依赖项 - 查找hibernate-validator
并在下面添加一个到相应依赖项内的pom.xml中 - 如果不需要的话。
<exclusion>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
</exclusion>
在spring-servlet.xml中添加它
<beans:bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> </beans:bean>
和以下的罐子
一切都会好起来的。
乐于帮助...