简体   繁体   English

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

[英]RabbitMq and Spring Boot 1.5.8 error java.lang.ClassNotFoundException: reactor.io.codec.Codec

Currently I use spring boot 1.5.8 and I want to use rabbitmq with my websocket. 目前,我使用Spring Boot 1.5.8,并且想在我的websocket中使用Rabbitmq。

The following code is my configuration of websocket 以下代码是我对websocket的配置

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config
            .enableStompBrokerRelay("/topic", "/queue", "/exchange")
            .setRelayHost("localhost")
            .setRelayPort(5672)
            .setClientLogin("guest")
            .setClientPasscode("guest")
            .setSystemHeartbeatSendInterval(5000);
    }

I add to my gradle config the following dependencies 我将以下依赖项添加到我的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 generate the following stack error 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
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

I don't know what I'm doing wrong. 我不知道我在做什么错。 Any ideas? 有任何想法吗?

I follow the ideas given by http://djeison.me/2017/11/04/spring-websocket-rabbitmq/ 我遵循http://djeison.me/2017/11/04/spring-websocket-rabbitmq/

And also have the same problem as Spring security 4.0.1 and Spring 4.2.0.RC1 stompBrokerRelayMessageHandler bean error with RabbitMQ 并且也有与Spring Security 4.0.1和Spring 4.2.0.RC1 stompBrokerRelayMessageHandler Bean因RabbitMQ而出现的错误相同的问题

在GitHub上解决了类似的问题: https : //github.com/zyro23/grails-spring-websocket/issues/26

I have a very rare situation. 我的情况非常罕见。 I will explain it. 我会解释的。

I use IntelliJ as my principal IDE for java development. 我将IntelliJ用作Java开发的主要IDE。 When I configure the gradle plugin with the right panel, I always use the button for refresh dependencies. 当在右侧面板中配置gradle插件时,我总是使用按钮刷新依赖关系。 The strange situation here was that when I run spring boot with bootRun inside IntelliJ, it always generate the same error as the question said. 这里的奇怪情况是,当我在IntelliJ中使用bootRun运行spring boot时,它总是产生与问题相同的错误。 I tried the last resource that was to bootRepackage the jar. 我尝试了最后一个用来引导jar的资源。 Incredible, that was the solution. 不可思议的是,解决方案。 After the bootRepackage, IntelliJ recognize the new class reactor.io.codec.Codec. bootRepackage之后,IntelliJ会识别新的类react.io.codec.Codec。

So if you use IntelliJ as your main IDE, try to repackage and after that maybe the error was gone. 因此,如果您将IntelliJ用作主IDE,请尝试重新打包,然后错误可能消失了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 春季启动Reactor java.lang.ClassNotFoundException MultiReaderFastList - spring-boot Reactor java.lang.ClassNotFoundException MultiReaderFastList Hazelcast Spring Boot java.lang.ClassNotFoundException - Hazelcast Spring Boot java.lang.ClassNotFoundException 错误 java.lang.ClassNotFoundException: reactor.core.scheduler.TimedScheduler - Error java.lang.ClassNotFoundException: reactor.core.scheduler.TimedScheduler Android studio:Rabbitmq:错误:java.lang.ClassNotFoundException:找不到类io.micrometer.core.instrument.MeterRegistry - Android studio: Rabbitmq: Error:java.lang.ClassNotFoundException: Class io.micrometer.core.instrument.MeterRegistry not found 春季启动java.lang.ClassNotFoundException:org.dom4j.io.STAXEventReader - spring boot java.lang.ClassNotFoundException: org.dom4j.io.STAXEventReader Spring-boot swagger 在 io.swagger.models.parameters.Parameter 上抛出 java.lang.ClassNotFoundException - Spring-boot swagger throws java.lang.ClassNotFoundException on io.swagger.models.parameters.Parameter 尝试创建CommonsHttpOAuthConsumer时java.lang.ClassNotFoundException:org.apache.commons.codec.binary.Base64 - java.lang.ClassNotFoundException: org.apache.commons.codec.binary.Base64 when trying to create CommonsHttpOAuthConsumer java.lang.ClassNotFoundException:org.apache.commons.codec.binary.Base64 - java.lang.ClassNotFoundException: org.apache.commons.codec.binary.Base64 spring boot和maven build上的java.lang.ClassNotFoundException - java.lang.ClassNotFoundException on spring boot and maven build Spring Boot 2升级java.lang.ClassNotFoundException:EmbeddedServletContainerCustomizer - Spring Boot 2 upgrade java.lang.ClassNotFoundException: EmbeddedServletContainerCustomizer
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM