2

使用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>

这是一个烦人的问题。

有人想提点意见吗?非常感谢帮助!

4

2 回答 2

2

依赖项包含剥离的类,其中不包含此处javax::javaee-api描述的方法实现。您可以改用 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>
于 2013-02-14T19:55:09.397 回答
1

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

由于无法从 javaee-api 中删除 validator-api(它不是作为依赖项导入的),诀窍是使用 javaee-api 8.0 版(它还包含validation-api,但工厂可以工作),您可以避免添加验证 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>

而已。

于 2022-01-20T10:59:54.067 回答