【问题标题】:java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/validation/Validationjava.lang.ClassFormatError:类文件 javax/validation/Validation 中非本机或抽象方法中的缺失代码属性
【发布时间】:2022-01-20 18:59:54
【问题描述】:

使用maven添加activemq,在IDE中进行单元测试时出现jar冲突的问题,异常信息为:

java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/validation/Validation

我已经排除了javaee的验证,如下:

   <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>6.0</version>
        <scope>provided</scope>
        <exclusions>
            <exclusion>
                <groupId>javax.validation</groupId>
                <artifactId>validation-api</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.apache.geronimo.specs</groupId>
                <artifactId>geronimo-jms_1.1_spec</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

并且对activemq的依赖是

  <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-all</artifactId>
        <version>${activemq_version}</version>

        <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
            </exclusion>

            <exclusion>
                <groupId>org.fusesource.fuse-extra</groupId>
                <artifactId>fusemq-leveldb</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

这是一个烦人的问题。

有人想给点意见吗?非常感谢您的帮助!

【问题讨论】:

    标签: validation exception maven activemq


    【解决方案1】:

    依赖javax::javaee-api 包含剥离的类,这些类不包含如here 所述的方法实现。您可以改用 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>
    

    【讨论】:

      【解决方案2】:

      我知道这是一个非常老的问题,但我最近遇到了这个问题,我找到了一个简单的解决方案,将来可能对某人有用。

      由于验证器 API 无法从 javaee-api 中删除(它不是作为依赖项导入),诀窍是使用 javaee-api 8.0 版(它还包含验证器 API,但工厂可以工作)并且你可以避免添加validation-api,类似于:

      <dependency>
          <groupId>javax</groupId>
          <artifactId>javaee-api</artifactId>
          <version>8.0</version>
          <scope>provided</scope>
      </dependency>
      <dependency>
          <groupId>org.glassfish</groupId>
          <artifactId>javax.el</artifactId>
          <version>3.0.0</version>
      </dependency>
      

      就是这样。

      【讨论】:

        猜你喜欢
        • 2012-08-21
        • 1970-01-01
        • 1970-01-01
        • 2011-12-10
        • 1970-01-01
        • 2012-04-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多