2017-07-28 131 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。 –