无法启动 bean 'stompBrokerRelayMessageHandler';嵌套异常是 java.lang.NoClassDefFoundError: io/netty/util/concu

Posted

技术标签:

【中文标题】无法启动 bean \'stompBrokerRelayMessageHandler\';嵌套异常是 java.lang.NoClassDefFoundError: io/netty/util/concurrent/EventExecutor【英文标题】:Failed to start bean 'stompBrokerRelayMessageHandler'; nested exception is java.lang.NoClassDefFoundError: io/netty/util/concurrent/EventExecutor无法启动 bean 'stompBrokerRelayMessageHandler';嵌套异常是 java.lang.NoClassDefFoundError: io/netty/util/concurrent/EventExecutor 【发布时间】:2019-09-09 18:21:36 【问题描述】:

我正在使用 RabbitMQ 设置 Springboot 2.1.4。该项目使用简单的代理运行良好,但在使用 RabbitMQ 切换到 Stomp 代理中继时,应用程序启动失败并出现以下错误。

2019-04-19 18:32:36.841 INFO 80706 --- [main] os.s.concurrent.ThreadPoolTask​​Executor:关闭 ExecutorService 'clientOutboundChannelExecutor' 2019-04-19 18:32:36.841 INFO 80706 --- [main] os.s.concurrent.ThreadPoolTask​​Executor:关闭 ExecutorService 'clientInboundChannelExecutor' 2019-04-19 18:32:36.845 INFO 80706 --- [main] o.apache.catalina.core.StandardService:停止服务 [Tomcat] 2019-04-19 18:32:36.860 信息 80706 --- [主要] ConditionEvaluationReportLoggingListener: 启动 ApplicationContext 时出错。要显示条件报告,请在启用“调试”的情况下重新运行您的应用程序。 2019-04-19 18:32:36.871 错误 80706 --- [main] os.boot.SpringApplication:应用程序运行失败 org.springframework.context.ApplicationContextException:无法启动 bean 'stompBrokerRelayMessageHandler';嵌套异常是 java.lang.NoClassDefFoundError: io/netty/util/concurrent/EventExecutor 在 org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:185) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE] 在 org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:53) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE] 在 org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:360) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE] 在 org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:158) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE] 在 org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:122) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE] 在 org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:893) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE] 在 org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh(ServletWebServerApplicationContext.java:163) ~[spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE] 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:552) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE] 在 org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:142) ~[spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE] 在 org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775) [spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE] 在 org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) [spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:316) [spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1260) [spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1248) [spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE] 在 com.sand.SpringWebSockets.SpringWebSocketsApplication.main(SpringWebSocketsApplication.java:10) [classes/:na] 引起:java.lang.NoClassDefFoundError: io/netty/util/concurrent/EventExecutor 在 org.springframework.messaging.simp.stomp.StompBrokerRelayMessageHandler.initTcpClient(StompBrokerRelayMessageHandler.java:435) ~[spring-messaging-5.1.6.RELEASE.jar:5.1.6.RELEASE] 在 org.springframework.messaging.simp.stomp.StompBrokerRelayMessageHandler.startInternal(StompBrokerRelayMessageHandler.java:401) ~[spring-messaging-5.1.6.RELEASE.jar:5.1.6.RELEASE] 在 org.springframework.messaging.simp.broker.AbstractBrokerMessageHandler.start(AbstractBrokerMessageHandler.java:186) ~[spring-messaging-5.1.6.RELEASE.jar:5.1.6.RELEASE] 在 org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:182) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE] ...省略了14个常用框架 引起:java.lang.ClassNotFoundException:io.netty.util.concurrent.EventExecutor 在 java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_161] 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_161] 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338) ~[na:1.8.0_161] 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_161] ...省略了 18 个常用框架

【问题讨论】:

【参考方案1】:

还有一个依赖,你需要添加。 可能是你错过了这个。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-reactor-netty</artifactId>
</dependency>

【讨论】:

以上是关于无法启动 bean 'stompBrokerRelayMessageHandler';嵌套异常是 java.lang.NoClassDefFoundError: io/netty/util/concu的主要内容,如果未能解决你的问题,请参考以下文章

无法启动休眠会话工厂 bean

Springboot 2.6.0 / Spring fox 3 - 无法启动 bean 'documentationPluginsBootstrapper'

由于 Bean Validation API 无法启动 Hibernate Validator

spring boot 无法启动——在配置中定义一个“TopicRepository”类型的bean

Spring Boot 错误:由于缺少 EmbeddedServletContainerFactory bean,无法启动 EmbeddedWebApplicationContext

由于缺少 ServletWebServerFactory bean,即使使用 @springbootapplication,我也无法启动 ServletWebServerApplicationCont