2015-11-23 47 views
0

我想添加一個spark模塊到我的java gradle項目中,但是,我使用io.netty:netty-all:5.0.0.Alpha1和spark 1.5.2使用io.netty:netty-all: 4.0.33.Final,不幸的是,由於PooledByteBufAllocator的構造函數,alpha版本不是向後兼容的。如何解決使用不同版本庫的模塊之間的依賴關係?

Exception in thread "main" java.lang.NoSuchMethodError: io.netty.buffer.PooledByteBufAllocator.<init>(ZIIIIIII)V 
at org.apache.spark.network.util.NettyUtils.createPooledByteBufAllocator(NettyUtils.java:122) 
at org.apache.spark.network.client.TransportClientFactory.<init>(TransportClientFactory.java:105) 
at org.apache.spark.network.TransportContext.createClientFactory(TransportContext.java:78) 
at org.apache.spark.network.netty.NettyBlockTransferService.init(NettyBlockTransferService.scala:61) 
at org.apache.spark.storage.BlockManager.initialize(BlockManager.scala:187) 
at org.apache.spark.SparkContext.<init>(SparkContext.scala:528) 

一個選項是讓叉火花使用另一個構造函數,並希望alpha版本將工作。另一種方法是以某種方式強制傳遞依賴來解決單個模塊(火花模塊)的問題,但我不清楚如何實現這一點。

任何意見是非常感謝。

回答

1

我唯一想到的就是OSGI。這就是說你最好不要使用netty的alpha版本並堅持到穩定的分支。

相關問題