【问题标题】:How to resolve dependencies across modules that use different versions of a library?如何解决使用不同版本库的模块之间的依赖关系?
【发布时间】:2015-11-24 11:09:56
【问题描述】:

我正在尝试将 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)

我可以选择 fork spark 使用另一个构造函数,并希望 alpha 版本能够正常工作。另一种方法是强制传递依赖项来解析单个模块(spark 模块),但我不清楚如何实现这一点。

非常感谢任何建议。

【问题讨论】:

    标签: gradle apache-spark netty


    【解决方案1】:

    我唯一想到的就是 OSGI。也就是说,您最好不要使用 netty 的 alpha 版本并坚持使用稳定的分支。

    【讨论】:

      猜你喜欢
      • 2010-10-16
      • 2013-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多