java - Camel netty组件: Failed to create selector

标签 java sockets apache-camel netty nosuchmethoderror

我正在尝试使用 netty 来消耗 tcp 套接字中的字节。我正在使用 Apache Camel 2.12.1、Spring DSL 和 Windows。我的路线非常简单:

<camelContext xmlns="http://camel.apache.org/schema/spring" autoStartup="true">
    <route id="my-route">
        <from uri="netty:tcp://127.0.0.1:4102?sync=true&amp;textline=true" />
        <convertBodyTo type="java.lang.String" />
        <to uri="file:./data" />
    </route>
</camelContext>

我在启动路线时遇到此异常:

2013-11-15 19:33:23,749 ERROR [Thread-5] - org.jboss.netty.channel.ChannelException: Failed to create a selector.
org.apache.camel.RuntimeCamelException: org.jboss.netty.channel.ChannelException: Failed to create a selector.
    at org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1344) ~[camel-core-2.12.1.jar:2.12.1]
    at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:120) ~[camel-spring-2.12.1.jar:2.12.1]
    at org.apache.camel.spring.CamelContextFactoryBean.onApplicationEvent(CamelContextFactoryBean.java:301) ~[camel-spring-2.12.1.jar:2.12.1]
    ...
    at java.lang.Thread.run(Thread.java:724) [?:1.7.0_40]
Caused by: org.jboss.netty.channel.ChannelException: Failed to create a selector.
    at org.jboss.netty.channel.socket.nio.AbstractNioSelector.openSelector(AbstractNioSelector.java:337) ~[netty-3.7.0.Final.jar:?]
    at org.jboss.netty.channel.socket.nio.AbstractNioSelector.<init>(AbstractNioSelector.java:95) ~[netty-3.7.0.Final.jar:?]
    at org.jboss.netty.channel.socket.nio.NioServerBoss.<init>(NioServerBoss.java:49) ~[netty-3.7.0.Final.jar:?]
    at org.jboss.netty.channel.socket.nio.NioServerBossPool.newBoss(NioServerBossPool.java:55) ~[netty-3.7.0.Final.jar:?]
    at org.jboss.netty.channel.socket.nio.NioServerBossPool.newBoss(NioServerBossPool.java:26) ~[netty-3.7.0.Final.jar:?]
    at org.jboss.netty.channel.socket.nio.AbstractNioBossPool.init(AbstractNioBossPool.java:65) ~[netty-3.7.0.Final.jar:?]
    at org.jboss.netty.channel.socket.nio.NioServerBossPool.<init>(NioServerBossPool.java:40) ~[netty-3.7.0.Final.jar:?]
    at org.apache.camel.component.netty.NettyServerBossPoolBuilder.build(NettyServerBossPoolBuilder.java:65) ~[camel-netty-2.12.1.jar:2.12.1]
    at org.apache.camel.component.netty.SingleTCPNettyServerBootstrapFactory.startServerBootstrap(SingleTCPNettyServerBootstrapFactory.java:132) ~[camel-netty-2.12.1.jar:2.12.1]
    at org.apache.camel.component.netty.SingleTCPNettyServerBootstrapFactory.doStart(SingleTCPNettyServerBootstrapFactory.java:93) ~[camel-netty-2.12.1.jar:2.12.1]
    at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) ~[camel-core-2.12.1.jar:2.12.1]
    ... 100 more
Caused by: java.lang.NoSuchMethodError: org.jboss.netty.channel.socket.nio.SelectorUtil.open()Ljava/nio/channels/Selector;
    at org.jboss.netty.channel.socket.nio.AbstractNioSelector.openSelector(AbstractNioSelector.java:335) ~[netty-3.7.0.Final.jar:?]
    at org.jboss.netty.channel.socket.nio.AbstractNioSelector.<init>(AbstractNioSelector.java:95) ~[netty-3.7.0.Final.jar:?]
    at org.jboss.netty.channel.socket.nio.NioServerBoss.<init>(NioServerBoss.java:49) ~[netty-3.7.0.Final.jar:?]
    at org.jboss.netty.channel.socket.nio.NioServerBossPool.newBoss(NioServerBossPool.java:55) ~[netty-3.7.0.Final.jar:?]
    at org.jboss.netty.channel.socket.nio.NioServerBossPool.newBoss(NioServerBossPool.java:26) ~[netty-3.7.0.Final.jar:?]
    at org.jboss.netty.channel.socket.nio.AbstractNioBossPool.init(AbstractNioBossPool.java:65) ~[netty-3.7.0.Final.jar:?]
    at org.jboss.netty.channel.socket.nio.NioServerBossPool.<init>(NioServerBossPool.java:40) ~[netty-3.7.0.Final.jar:?]
    at org.apache.camel.component.netty.NettyServerBossPoolBuilder.build(NettyServerBossPoolBuilder.java:65) ~[camel-netty-2.12.1.jar:2.12.1]
    at org.apache.camel.component.netty.SingleTCPNettyServerBootstrapFactory.startServerBootstrap(SingleTCPNettyServerBootstrapFactory.java:132) ~[camel-netty-2.12.1.jar:2.12.1]
    at org.apache.camel.component.netty.SingleTCPNettyServerBootstrapFactory.doStart(SingleTCPNettyServerBootstrapFactory.java:93) ~[camel-netty-2.12.1.jar:2.12.1]
    ... 20 more

有什么想法没有开始吗?谢谢!

最佳答案

NoSuchMethodError 通常是由于 CLASSPATH 上有不兼容的 jar(太旧或太新)引起的。

(我偶尔发现免费的 JBoss Tattletale 对于识别我的 CLASSPATH 上的类或 jar 的旧重复副本很有用。但是,重复可能不是问题在这里。)

关于java - Camel netty组件: Failed to create selector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20013633/

相关文章:

java - java的轻量级缓存系统?

java - 寻找好的Java音频压缩库

java - finally 语句在 try/catch java 中不起作用?

Android套接字客户端超时

java - Camel 邮件 IMAP 不跳过失败的邮件

java - 具有多个依赖项的 Dagger2 组件

c - 如果在多个系统调用中完成,为什么 TCP 套接字会变慢?

java - 通信链路故障 最后发送到服务器的数据包是在 4 毫秒前

spring - 带有 Spring DSL + OSGi 的 Karaf 上的 Apache Camel

java - 使用拦截器时的 Camel 异常处理行为