RabbitMq 和 Spring Boot 1.5.8 错误 java.lang.

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


以下代码是我对websocket的配置


    @Override

    public void configureMessageBroker(MessageBrokerRegistry config) {

        config

            .enableStompBrokerRelay("/topic", "/queue", "/exchange")

            .setRelayHost("localhost")

            .setRelayPort(5672)

            .setClientLogin("guest")

            .setClientPasscode("guest")

            .setSystemHeartbeatSendInterval(5000);

    }

我将以下依赖项添加到我的 gradle 配置中


     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 产生以下堆栈错误


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


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


泛舟湖上清波郎朗
浏览 148回答 2
2回答

慕村225694

我有一个非常罕见的情况。我会解释的。我使用 IntelliJ 作为 Java 开发的主要 IDE。当我使用右侧面板配置 gradle 插件时,我总是使用刷新依赖项的按钮。这里的奇怪情况是,当我在 IntelliJ 中使用 bootRun 运行 spring boot 时,它总是产生与问题所述相同的错误。我尝试了最后一个用于 bootRepackage jar 的资源。难以置信,这就是解决方案。在 bootRepackage 之后,IntelliJ 识别出新的类 reactor.io.codec.Codec。因此,如果您使用 IntelliJ 作为主要 IDE,请尝试重新打包,然后可能错误消失了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java