scala - 第三方库在 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 已经提供的库吗?
解决方案
我不认为 Storm 捆绑了 Scala。至少我在 1.1.0 发行版 zip 中没有看到它。
通常,Storm 放在类路径中的库将位于 Storm 安装的storm/lib 或storm/extlib 目录中。我没有使用过 HDInsight,所以我不知道你有什么样的访问权限,但如果 HDInsight 将 Scala 放在 Storm 的类路径上,那么 jar 可能在其中一个文件夹中是一个不错的选择。如果你在那里找到它,你可以用你需要的版本替换它。
推荐阅读
- loops - 在 scss 中使用 @for 循环
- html - 将固定 div 定位在另一个固定 div 内
- objective-c - 未命名(临时、非左值)变量的 Objective-C 版本
- kiwi-tcms - 在公共租户上看不到测试运行/集成项目
- javascript - 如何在 return 语句中映射二维数组?
- android - 获取包含最后一条消息的所有频道的最快方法是什么?
- azure-cosmosdb - 使用 DocumentClient.ReadOfferAsync 获取缩放状态
- node.js - 为什么我的 Mocha 测试(异步/等待)通过但同时抛出错误?
- r - 如何加载具有未知文件类型的 R 工作空间
- websocket - 使用 Kotlin 时是否有适用于 iOS 的 WebSocket 客户端库?