Scala 2.10.5下Scallop Verify()方法失效问题咨询
解决方案:降级Scallop版本适配Scala 2.10.5
你遇到的NoSuchMethodError本质是Scallop 3.x系列不再支持Scala 2.10,3.1.2版本是针对Scala 2.11及以上版本编译的,它依赖的Scala内部API(比如scala.collection.immutable.$colon$colon.hd$1())在Scala 2.10中签名不一致,导致运行时找不到对应方法。
由于你必须保留Scala 2.10.5适配Spark 1.6,最直接的解决办法是降级Scallop到支持Scala 2.10的最新稳定版本:
修改你的build.sbt配置
把Scallop的版本替换为2.x系列的最后一个稳定版2.1.2:
scalaVersion := "2.10.5" libraryDependencies += "org.rogach" %% "scallop" % "2.1.2"
验证代码兼容性
你提供的示例代码在Scallop 2.x中可以正常运行,核心API完全兼容:
ScallopConf继承、opt[String]参数配置、verify()校验方法这些写法在2.x版本中都能正常工作- 如果后续需要扩展功能,注意避免使用Scallop 3.x新增的API,建议参考2.x版本的特性文档
方案原理
Scallop的2.x系列专门维护了对Scala 2.10、2.11的兼容,而3.x版本开始只针对Scala 2.12及以上版本优化。降级到2.1.2后,库文件会适配Scala 2.10的内部API,自然就能解决方法找不到的错误。
内容的提问来源于stack exchange,提问作者Sindhu
相关产品推荐
相关产品推荐

