0

抱歉标题可能不好,但正如它所说的那样。我是 Netty 的新手,这是我第二次尝试使用网络解决方案来解决我正在尝试做的事情。第一个直接使用 java.nio UDP 的解决方案有效,但效率低下且速度比我能忍受的慢。

我在启动时不断收到错误,找不到解决方案。该错误告诉我在类 io.netty.channel.udt.nio.NioUdtProvider 中没有这样的字段 Rendezvous。从javadocs看来,这指定了线程的作用。我错过了一个罐子吗?发生了什么?我可以获得有关如何解决此问题的任何指示吗?

我正在使用 Netty 4.0.0.1 CR1。这是我发现的唯一与示例一起使用的版本。我的类路径中还有 barchart-udt-core-2.2.0 和 jsch。

问题发生在我的服务器的主类(未命名为 main)中。在下一行。

    final ThreadFactory connectionFactory=new UtilThreadFactory("connect");
    final ThreadFactory acceptFactory=new UtilThreadFactory("accept");
    final NioEventLoopGroup acceptGroup = new NioEventLoopGroup(1,acceptFactory,NioUdtProvider.MESSAGE_PROVIDER);
    final NioEventLoopGroup connectGroup=new NioEventLoopGroup(1,connectionFactory,NioUdtProvider.MESSAGE_PROVIDER);

更具体地说,错误发生在最后两行。

使用 MsgEchoServer 示例和我的 NettyServer 时,我收到以下错误代码。

    Nov 07, 2013 5:07:53 PM netty.NettyServer main
    INFO: init
    Exception in thread "main" java.lang.NoSuchFieldError: RENDEZVOUS
      at io.netty.channel.udt.nio.NioUdtProvider.<clinit>(NioUdtProvider.java:68)
      at netty.NettyServer.run(NettyServer.java:103)
      at netty.NettyServer.main(NettyServer.java:191)

我试图找到一个包含这些定义的 netty 4x jar,特别是完整的 Netty 版本,但得到相同或不同的错误。

我的 UtilThreadFactory 代码如下,与http://grepcode.com/file/repo1.maven.org/maven2/io.netty/netty-example/4.0.0.CR1/io/netty/example中的代码几乎相同/udt/echo/message/MsgEchoServer.java?av=f

谢谢

实用线程

    package Netty;

    import java.util.concurrent.ThreadFactory;
    import java.util.concurrent.atomic.AtomicInteger;

    public class UtilThreadFactory implements ThreadFactory{

        private static final AtomicInteger counter=new AtomicInteger();

        private final String name;

        public UtilThreadFactory(final String name)
        {
       this.name=name;
        }

        public Thread newThread(final Runnable runnable)
        {
            return new Thread(runnable,name+'-'+counter.getAndIncrement());

        }


    }

*更新* 我按要求升级并得到完全相同的错误。我现在在我的路径中运行带有 jars 4.0.12 和 4.0.12-FINAL 的 Netty 4.0.12。无论我有一个或其他 jar 并且我清除了我的 eclipse 缓存,都会发生同样的错误。同样的问题也发生在 STS 弹簧工具中。任何帮助表示赞赏。谢谢

4

2 回答 2

1

感谢所有的帮助。在将所有 jar 移动到我的类路径并阅读它们的内容后,我找到了罪魁祸首。udt-core 中缺少一些东西,因为显然我有一些旧版本。我真的希望 wildfly/netty 的家伙能更好地记录这一点。我下载了 udt-core jar,这解决了问题。最新的罐子很难找到。它们位于http://repo1.maven.org/maven2/com/barchart/udt/

于 2013-11-08T19:57:06.257 回答
0

请升级到 netty 4.0.12.Final ...您的版本很旧,我们有 UDT 的工作示例。

于 2013-11-08T07:05:53.170 回答