Advertisement

org.springframework.core.annotation.AnnotationUtils.isCandidateClass(Ljava/lang/Class;Ljava/lang/Cla

阅读量:

在编写一个基于ActiveMQ的小例子时,出现了错误。Bean initialization失败,并且nested exception为java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotationUtils.isCandidateClass(Ljava/lang/Class;Ljava/lang/Class;)Z

分析问题:
jar包冲突啦

IDEA按住shift+shift

在这里插入图片描述

看吧,这两个冲突啦。

涉及activmq-all-5.15.6版本和spring-core-5.2.7 RELEASE版本;对AnnotationUtils是否存在冲突问题进行了查看

在这里插入图片描述
在这里插入图片描述

解决办法:

就不要用activmq-all-5.15.6.jar包
删啦pom文件里的这个依赖

复制代码
    <!--<dependency>-->
            <!--<groupId>org.apache.activemq</groupId>-->
            <!--<artifactId>activemq-all</artifactId>-->
            <!--<version>5.15.6</version>-->
        <!--</dependency>-->

删除了随后依次显示的几个错误信息,并发现这些错误都是由于缺少必要的Java消息系统依赖项所导致的。
import org.springframework.stereotype.Service;
import org.apache.activemq.transport.stomp.StompConnection;
java.lang.NoClassDefFoundError: javax/jms/JMSContext

复制代码
     <!--activemq-all的替换包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>5.2.7.RELEASE</version>
        </dependency>
    
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.2.5.RELEASE</version>
        </dependency>
    
        <dependency>
            <groupId>activemq</groupId>
            <artifactId>activemq-spring</artifactId>
            <version>2.1</version>
        </dependency>
    
        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-stomp</artifactId>
            <version>5.15.13</version>
        </dependency>

然后就不报错成功啦~真开心鸭!

在这里插入图片描述

本质上来说,核心思路是移除了activmq-all-5.15.6.jar这个依赖项。当代码提示缺少某个组件时,则直接替换成可用版本。这样就不会出现依赖冲突的问题。

又是努力学习的一天,好充实好幸福~~~

全部评论 (0)

还没有任何评论哟~