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

问题描述 投票:2回答:4

我读过this this,但这没有帮助......

我正在使用具有以下版本/依赖项的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。 (如果是这种情况,我也会看到它们被加载到日志中,不是吗?)

有什么帮助吗?

java validation hibernate-validator
4个回答
2
投票

我在使用JSR 303 bean验证时遇到了同样的问题我在下面添加了两个jar(以及validation-api-1.1.0.final.jar和hibernate-validator-5.0.1.final.jar)并且问题得到了解决

  1. classmate-0.8.0.jar 2.jboss-logging-3.1.0.ga.jar

0
投票

我怀疑javax.el的多个实现。这通常是造成这类问题的原因。

检查您是否有另一个名称不同的人。

如果不是这样,请在ConfigurationImpl构造函数中添加一个检查点,并检查哪些内容失败。


0
投票

试试这个配置:

<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 ..


0
投票

首先,使用mvn dependency:tree检查所有依赖项 - 查找hibernate-validator并在下面添加一个到相应依赖项内的pom.xml中 - 如果不需要的话。

<exclusion>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
</exclusion>

0
投票

在spring-servlet.xml中添加它

 <beans:bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> </beans:bean> 

和以下的罐子

  1. 休眠 - 验证 - 6.0.17.Final.jar
  2. 验证-API 2.0.1.Final.jar
  3. 同学-1.3.4.jar
  4. JBoss的日志记录,3.3.2.Final.jar

一切都会好起来的。

乐于帮助...

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