Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring 4.0和ActiveMQ enableStompBrokerRelay错误_Java_Spring - Fatal编程技术网

Java Spring 4.0和ActiveMQ enableStompBrokerRelay错误

Java Spring 4.0和ActiveMQ enableStompBrokerRelay错误,java,spring,Java,Spring,我已经通过使用SimpleBroker成功地运行了这个示例 我的配置设置如下: @Override public void configureMessageBroker(MessageBrokerRegistry registry) { registry.enableSimpleBroker("/topic"); //registry.enableStompBrokerRelay("/queue/","/topic/").setRelayHost("localhost").set

我已经通过使用SimpleBroker成功地运行了这个示例

我的配置设置如下:

@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
    registry.enableSimpleBroker("/topic");
    //registry.enableStompBrokerRelay("/queue/","/topic/").setRelayHost("localhost").setRelayPort(61614);
    registry.setApplicationDestinationPrefixes("/app");
}
当我注释掉SimpleBroker并尝试使用StompBroker时,我得到以下错误

ERROR: org.springframework.web.servlet.DispatcherServlet - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'stompBrokerRelayMessageHandler' defined in class path resource   [org/springframework/web/socket/config/annotation/DelegatingWebSocketMessageBrokerConfigurat    ion.class]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.springframework.messaging.simp.broker.AbstractBrokerMessageHandler org.springframework.messaging.simp.config.AbstractMessageBrokerConfiguration.stompBrokerRelayMessageHandler()] threw exception; nested exception is java.lang.NoClassDefFoundError: reactor/tcp/encoding/Codec
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:592)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1094)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:989)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:700)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:643)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:606)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:657)
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:525)
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:466)
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
at javax.servlet.GenericServlet.init(GenericServlet.java:160)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1088)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5176)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5460)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3954)
at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:426)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1345)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1530)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1540)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1540)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1519)
at java.lang.Thread.run(Unknown Source)
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.springframework.messaging.simp.broker.AbstractBrokerMessageHandler org.springframework.messaging.simp.config.AbstractMessageBrokerConfiguration.stompBrokerRelayMessageHandler()] threw exception; nested exception is java.lang.NoClassDefFoundError: reactor/tcp/encoding/Codec
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:188)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:581)
... 32 more
我是否缺少一些资源,因此无法创建bean stompBrokerRelayMessageHandler


在STS内部的Tomcat v7.0上运行此命令,并将ActiveMQ用于message broker。

堆栈跟踪非常清楚地表明它缺少一个类:

java.lang.NoClassDefFoundError: reactor/tcp/encoding/Codec
看看你是否不知道怎么读

对于任何未找到的类问题,最常见的解决方案是将相应的jar包含到类路径中

最简单的方法是访问和,例如:

fc:reactor.tcp.encoding.Codec

这将告诉您该类属于reactor tcp jar。您可以下载jar并手动将其添加到类路径中,也可以简单地将maven依赖项xml粘贴到pom文件中。

您需要在pom.xml中添加它

<!-- Reactor -->
<dependency>
  <groupId>org.projectreactor</groupId>
  <artifactId>reactor-core</artifactId>
  <version>1.0.0.RELEASE</version>
</dependency>
<dependency>
  <groupId>org.projectreactor</groupId>
  <artifactId>reactor-tcp</artifactId>
  <version>1.0.0.RELEASE</version>
</dependency>

org.projectreactor
堆芯
1.0.0.1版本
org.projectreactor
反应器tcp
1.0.0.1版本

rsaez的答案几乎正确,就我而言。 我必须补充一点:

    <!-- Reactor -->
    <dependency>
        <groupId>org.projectreactor</groupId>
        <artifactId>reactor-core</artifactId>
        <version>1.1.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.projectreactor</groupId>
        <artifactId>reactor-net</artifactId>
        <version>1.1.6.RELEASE</version>
    </dependency>

org.projectreactor
堆芯
1.1.6.1发布
org.projectreactor
反应堆网
1.1.6.1发布

为了让Reactor 2.0与我的Spring 4.2+环境配合使用,我添加了以下依赖项:

    <dependency>
        <groupId>io.projectreactor</groupId>
        <artifactId>reactor-core</artifactId>
        <version>2.0.5.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>io.projectreactor</groupId>
        <artifactId>reactor-net</artifactId>
        <version>2.0.5.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>io.projectreactor.spring</groupId>
        <artifactId>reactor-spring-context</artifactId>
        <version>2.0.5.RELEASE</version>
    </dependency>

离子交换反应器

然后netty在我的类路径中丢失了,所以我添加了:

    <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-all</artifactId>
        <version>4.0.31.Final</version>
    </dependency>

伊奥·内蒂
讨厌的
4.0.31.1最终版本

我遇到了同样的问题,这对我很有效。我使用的是Spring 4.1.6

  <dependency>
        <groupId>org.projectreactor</groupId>
        <artifactId>reactor-core</artifactId>
        <version>1.1.6.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.projectreactor</groupId>
        <artifactId>reactor-net</artifactId>
        <version>1.1.6.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.projectreactor</groupId>
        <artifactId>reactor-tcp</artifactId>
        <version>1.0.1.RELEASE</version>
    </dependency>

org.projectreactor
堆芯
1.1.6.1发布
org.projectreactor
反应堆网
1.1.6.1发布
org.projectreactor
反应器tcp
1.0.1.1发布

我是跟随上面的Alex Bretet成功的, 但只有一个变化是版本

<dependency>
    <groupId>io.projectreactor</groupId>
    <artifactId>reactor-core</artifactId>
    <version>2.0.8.RELEASE</version>
</dependency>

离子交换反应器
堆芯
2.0.8.1发布
而不是2.0.5
我的应用程序在spring 4.3.18上运行

如果您使用spring boot,您只需使用amqp和reactor netty启动器即可:

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

org.springframework.boot
弹簧启动机amqp
org.springframework.boot
弹簧起动器

看起来类路径中需要reactor。看见