首页 > 解决方案 > 第三方库在 Storm 中因 NoSuchMethodError 而失败

问题描述

我在 Storm 上运行的拓扑因 Bolt 中出现 NoSuchMethodError scala.Predef$.doubleWrapper 而失败,因为第三方库需要更高版本的 Scala (2.11.x),而不是与 Azure HDInsight 3.6(Storm 1.1.0、Scala 2.9)捆绑的版本。 2)。我使用 maven-assembly-plugin 将后来的 Scala 库包含在 fat jar 中,并尝试使用 Storm CLI jar 命令的 --jar 选项传递 2.11 Scala Jar,但 Storm 仍然使用较旧的 Scala 版本。

知道如何强制拓扑覆盖 Storm 已经提供的库吗?

标签: scalaapache-storm

解决方案


我不认为 Storm 捆绑了 Scala。至少我在 1.1.0 发行版 zip 中没有看到它。

通常,Storm 放在类路径中的库将位于 Storm 安装的storm/lib 或storm/extlib 目录中。我没有使用过 HDInsight,所以我不知道你有什么样的访问权限,但如果 HDInsight 将 Scala 放在 Storm 的类路径上,那么 jar 可能在其中一个文件夹中是一个不错的选择。如果你在那里找到它,你可以用你需要的版本替换它。


推荐阅读