首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RabbitMq和Spring Boot 1.5.8错误java.lang.ClassNotFoundException: reactor.io.codec.Codec

RabbitMq和Spring Boot 1.5.8错误java.lang.ClassNotFoundException: reactor.io.codec.Codec
EN

Stack Overflow用户
提问于 2018-07-29 11:05:52
回答 2查看 850关注 0票数 0

目前我使用的是spring boot 1.5.8,我想在我的websocket中使用rabbitmq。

下面的代码是我对websocket的配置

代码语言:javascript
复制
    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config
            .enableStompBrokerRelay("/topic", "/queue", "/exchange")
            .setRelayHost("localhost")
            .setRelayPort(5672)
            .setClientLogin("guest")
            .setClientPasscode("guest")
            .setSystemHeartbeatSendInterval(5000);
    }

我在gradle配置中添加了以下依赖项

代码语言:javascript
复制
     compile "org.springframework.boot:spring-boot-starter-websocket"
     compile("io.projectreactor:reactor-net:2.0.5.RELEASE")
     compile("io.projectreactor:reactor-core:2.0.5.RELEASE")
     compile("io.netty:netty-all:4.0.33.Final")

Spring boot会生成以下堆栈错误

代码语言:javascript
复制
Caused by: java.lang.NoClassDefFoundError: reactor/io/codec/Codec
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.springframework.messaging.simp.stomp.StompBrokerRelayMessageHandler.startInternal(StompBrokerRelayMessageHandler.java:388)
    at org.springframework.messaging.simp.broker.AbstractBrokerMessageHandler.start(AbstractBrokerMessageHandler.java:164)
    at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:175)
    ... 17 common frames omitted
Caused by: java.lang.ClassNotFoundException: reactor.io.codec.Codec
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 32 common frames omitted

我不知道我做错了什么。有什么想法吗?

我遵循http://djeison.me/2017/11/04/spring-websocket-rabbitmq/给出的想法

也有与Spring security 4.0.1 and Spring 4.2.0.RC1 stompBrokerRelayMessageHandler bean error with RabbitMQ相同的问题

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-30 00:37:07

我有一个非常罕见的情况。我会解释的。

我使用IntelliJ作为java开发的主要集成开发环境。当我使用右侧面板配置gradle插件时,我总是使用按钮来刷新依赖项。这里的奇怪情况是,当我在IntelliJ中使用bootRun运行spring boot时,总是生成与问题相同的错误。我尝试了最后一个资源,那就是bootRepackage这个jar。难以置信,这就是解决方案。在bootRepackage之后,IntelliJ识别出新的类reactor.io.codec.Codec。

因此,如果您使用IntelliJ作为主集成开发环境,请尝试重新打包,然后错误可能就会消失。

票数 0
EN

Stack Overflow用户

发布于 2018-07-29 12:03:05

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51576885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档