第三方库因 Storm 中的 NoSuchMethodError 而失败

Third party library fails with NoSuchMethodError in Storm

我在 Storm 上的拓扑 运行 因 NoSuchMethodError scala.Predef$.doubleWrapper in a bolt 失败,因为第三方库需要更高版本的 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 已经提供的库吗?

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

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