【问题标题】:NoClassDefFoundError while using hibernate-validator使用休眠验证器时出现 NoClassDefFoundError
【发布时间】:2013-02-14 13:06:27
【问题描述】:

我有一个 mavenized 项目,我在其中使用 JSR 303(Bean 验证)。作为参考实现,我使用 Hibernate-validator。在项目中我指定了依赖项:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>4.1.0.Final</version>
    <scope>provided</scope>
</dependency>

4.1.0 版一切正常。但是当我把它改成 4.2.0.我在这一行得到运行时错误:

ValidatorFactory factory = Validation.buildDefaultValidatorFactory();

java.lang.ClassFormatError:方法中的缺失代码属性是 在类文件 javax/persistence/Persistence 中不是本机或抽象的

......//更多堆栈跟踪

java.lang.NoClassDefFoundError: 无法初始化类 com.andr.myproject.services.utils.ValidationUtils

问题出在哪里?

UPD:我也使用 Java-ee-5 依赖项,而不是 6。

UPD2:这个错误发生在 JUnit 测试中

【问题讨论】:

    标签: java maven hibernate-validator


    【解决方案1】:

    你的项目中是否碰巧有以下依赖:

    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>6.0</version>
    </dependency>
    

    如果是这样,你应该确保从你的运行时类路径中排除它,因为这个 JAR 只能用于编译,但不能在运行时使用(它的类被修改,因此它们不包含方法实现)。您可以改用 JBoss 提供的 API JAR:

    <dependency>
        <groupId>org.jboss.spec</groupId>
        <artifactId>jboss-javaee-6.0</artifactId>
        <version>1.0.0.Final</version>
        <type>pom</type>
        <scope>provided</scope>
    </dependency>
    

    添加 Hibernate Core 可能会有所帮助,因为它将 JPA API 引入到单独的 JAR 中。您可以找到更多信息here

    【讨论】:

      【解决方案2】:

      我找到了解决方案:

      我需要添加 hibernate-core 依赖。没有它就行不通。

          <dependency>
              <groupId>org.hibernate</groupId>
              <artifactId>hibernate-core</artifactId>
              <version>4.0.1.Final</version>
          </dependency>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-20
        相关资源
        最近更新 更多