2017-07-28 928 views
1

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

当我建立我的图书馆,并尝试用一个项目中,我得到异常以下使用,

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) 

我没有进一步深挖到“网状 - 全4.1.13.Final.jar”和能找到具有返回类型“io/netty/bootstrap/BootstrapConfig”的方法“io.netty.bootstrap.Bootstrap.config()”实际上存在。

为什么我在这里得到“方法未找到错误”,然后如果它存在于我使用的jar /库中?

+0

是依赖于在另一个之前构建的那个方法的库吗? – Lino

+0

我使用相同的netty-all-4.1.13.Final.jar来构建/运行每个项目。 –

+0

我的意思是,当你建立你的项目时,是否真的编译过netty-library? – Lino

回答

1

我修改了用于运行应用程序的类路径一些罐子,我觉得之前包括网状 - 全4.1.13.Final.jar内部使用netty的旧版本库。

现在解决。

1

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

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

请不要偷的想法和重写他们,因为他们是你的

+0

我提取了用于构建我的项目的netty jar,并提取了用于运行我的项目的netty jar。两者都有方法“io.netty.bootstrap.Bootstrap.config()”。仍然在运行,我得到这个错误。 –

+0

运行项目之前删除具有此方法的类并尝试运行它。 1-将jar重命名为zip文件,2-打开它并删除该类。 3-关闭并重新命名为jar。运行项目 – Hasan

+0

如何从库中删除类?在这种情况下,我可能需要通过删除类来重新构建netty。 –