java.lang.NoSuchMethodError: in redisson and netty integration

java.lang.NoSuchMethodError: in redisson and netty integration

我已经使用 redisson 3.4.4 构建了自己的自定义方法库。这在内部使用 netty-all-4.1.13.Final.jar。

当我构建我的库并尝试将其用于某个项目时,我遇到了以下异常,

java.lang.NoSuchMethodError: io.netty.bootstrap.Bootstrap.config()Lio/netty/bootstrap/BootstrapConfig;
at org.redisson.client.RedisClient.operationComplete(RedisClient.java:214)
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:680)
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:567)
at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:406)
at org.redisson.misc.RedissonPromise.trySuccess(RedissonPromise.java:78)
at org.redisson.client.handler.BaseConnectionHandler.channelActive(BaseConnectionHandler.java:85)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:212)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelActive(AbstractChannelHandlerContext.java:198)
at io.netty.channel.DefaultChannelPipeline.fireChannelActive(DefaultChannelPipeline.java:818)
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.fulfillConnectPromise(AbstractNioChannel.java:252)
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:282)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:528)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354)
at io.netty.util.concurrent.SingleThreadEventExecutor.run(SingleThreadEventExecutor.java:111)
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
at java.lang.Thread.run(Thread.java:748)

我进一步深入研究了 "netty-all-4.1.13.Final.jar" 并且能够找到具有 return 类型 "io/netty/bootstrap/BootstrapConfig" 的方法 "io.netty.bootstrap.Bootstrap.config()" 实际上存在。

如果我正在使用 jar/library,为什么我会在这里得到 "method not found error"?

您可能用两个版本定义了相同的 class;没有这种方法的旧版本,以及使用这种方法的新 class!

解决方法:可以将包含该方法的class从包中移除。如果问题仍然存在,则意味着您的项目从 class 读取另一个版本。找到旧版本并将其删除!

并且请不要窃取这些想法并按原样重写它们

我修改了用于 运行 应用程序的类路径以包含 netty-all-4.1。13.Final.jar 在一些我觉得内部使用 netty 的旧版本库的 jar 之前。

目前已解决。