添加RabbitMQ Maven依赖后Spring Boot项目启动失败求助
问题描述
原本正常运行的Spring Boot集成Swagger-UI项目,添加RabbitMQ相关依赖后启动失败,报错信息如下:
Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.amqp.rabbit.config.internalRabbitListenerAnnotationProcessor': Lookup method resolution failed; nested exception is java.lang.IllegalStateException: Failed to introspect Class [org.springframework.amqp.rabbit.annotation.RabbitListenerAnnotationBeanPostProcessor] from ClassLoader [sun.misc.Launcher$AppClassLoader@18b4aac2]
Failed to introspect Class [org.springframework.amqp.rabbit.annotation.RabbitListenerAnnotationBeanPostProcessor] from ClassLoader [sun.misc.Launcher$AppClassLoader@18b4aac2]
项目pom.xml中关键依赖配置:
<properties> <java.version>1.8</java.version> <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version> </properties> <dependencies> <!-- 其他依赖 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> <scope>compile</scope> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId> <version>2.3.10</version> </dependency> </dependencies>
问题原因
核心是Spring版本依赖冲突:手动指定的spring-rabbit版本(2.3.10)与当前Spring Boot项目依赖的Spring Framework版本不兼容,导致类反射时无法正常解析相关类。
解决方案
方案一:使用Spring Boot自动依赖管理(推荐)
移除spring-rabbit的手动版本号,让Spring Boot的父依赖自动适配兼容版本:
<dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId> <!-- 去掉手动指定的version,依赖Spring Boot parent的版本管理 --> </dependency>
方案二:手动匹配兼容版本
如果必须指定版本,需确保spring-rabbit版本与当前Spring Boot版本完全匹配。例如Spring Boot 2.x系列对应spring-rabbit的2.x版本可参考Spring Boot官方依赖BOM确认具体兼容版本,避免版本不匹配。
后续操作
修改依赖后执行以下命令清理并重新构建项目,确保依赖正确加载:
mvn clean install
内容的提问来源于stack exchange,提问作者WinLord

