java.lang.NoSuchMethodError:在redisson和netty集成中

时间:2017-07-28 07:05:37

标签: java redis netty redisson

我使用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$1$1.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$2.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”,并且能够找到返回类型为“io / netty / bootstrap”的方法“io.netty.bootstrap.Bootstrap.config()” / BootstrapConfig“实际存在。

为什么我在这里得到“找不到方法错误”然后如果它出现在我正在使用的jar /库中?

2 个答案:

答案 0 :(得分:1)

您可能已经使用两个版本定义了同一个类;没有这种方法的旧版本,以及使用此方法的新类!

解决方案:您可以从包中删除包含此方法的类。如果问题仍然存在,则表示您的项目从类中读取另一个版本。找到旧版本并将其删除!

请不要窃取这些想法并重写它们,因为它们属于你的

答案 1 :(得分:1)

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

截至目前已解决。