scalaop验证()方法与scala版本`2.10.5`无法正常工作

时间:2018-05-25 00:47:21

标签: scala apache-spark

我正在使用scalaVersion := "2.10.5"libraryDependencies += "org.rogach" %% "scallop" % "3.1.2".

  

获取以下错误:线程" main"中的异常   java.lang.NoSuchMethodError:   。scala.collection.immutable $ $结肠colon.hd $ 1()Ljava /郎/对象;在   org.rogach.scallop.DefaultConverters $$匿名$ 2.parse(DefaultConverters.scala:27)   在   org.rogach.scallop.ValueConverter $ class.parseCached(ValueConverter.scala:21)   在   org.rogach.scallop.DefaultConverters $$匿名$ 2.parseCached(DefaultConverters.scala:24)   在   org.rogach.scallop.Scallop $$ anonfun $验证$ 17.apply(Scallop.scala:632)   在   org.rogach.scallop.Scallop $$ anonfun $验证$ 17.apply(Scallop.scala:630)   在scala.collection.immutable.List.foreach(List.scala:381)at   org.rogach.scallop.Scallop.verify(Scallop.scala:630)at   org.rogach.scallop.ScallopConfBase.verifyBuilder(ScallopConfBase.scala:405)   在   org.rogach.scallop.ScallopConfBase.verify(ScallopConfBase.scala:744)   在   。com.unity3d.ads.conf.OperativeEventConverterConf(OperativeEventConverterConf.scala:50)   在com.unity3d.ads.analytics.TestClass $ .main(TestClass.scala:51)at at   com.unity3d.ads.analytics.TestClass.main(TestClass.scala)at   sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at   sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)   在   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)   在java.lang.reflect.Method.invoke(Method.java:498)at   org.apache.spark.deploy.SparkSubmit $ .ORG $阿帕奇$火花$部署$ SparkSubmit $$ runMain(SparkSubmit.scala:738)   在   org.apache.spark.deploy.SparkSubmit $ .doRunMain $ 1(SparkSubmit.scala:187)   在org.apache.spark.deploy.SparkSubmit $ .submit(SparkSubmit.scala:212)   在org.apache.spark.deploy.SparkSubmit $ .main(SparkSubmit.scala:126)at at   org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

完全相同的代码与scalaVersion := "2.11.8"

一起正常运行

不幸的是,我必须使用2.10.5,因为我使用的是火花版1.6。

示例代码:

`import org.rogach.scallop.{ScallopConf, ScallopOption, Serialization, ValueConverter, singleArgConverter}

class TestClass(args: Seq[String]) extends ScallopConf(args) with Serialization {

val testInput: ScallopOption[String] =
opt[String](
name = "test.input",
descr = "test",
required = false,
default = Option("testPath"))
verify()
}
`

我是否可以使用此解决方法使其与scala 2.10.5一起使用?

1 个答案:

答案 0 :(得分:0)

回答我的问题以防其他人面临类似的问题。

这结果是类路径问题。问题的根本原因:

  

我使用spark 2.1运行使用spark 1.6版本编译的代码。显然,1.6使用scala 2.10 ..而spark 2.1使用scala 2.11 ...