Метод Scallop Verify () с версией scala `2.10.5` не работает - PullRequest
0 голосов
/ 25 мая 2018

Я использую scalaVersion := "2.10.5" и libraryDependencies += "org.rogach" %% "scallop" % "3.1.2".

Получение следующей ошибки: Исключение в потоке "main" java.lang.NoSuchMethodError: scala.collection.immutable. $ Colon $ colon.hd$ 1 () Ljava / языки / объекта;в org.rogach.scallop.DefaultConverters $$ anon $ 2.parse (DefaultConverters.scala: 27) в org.rogach.scallop.ValueConverter $ class.parseCached (ValueConverter.scala: 21) в org.rogach.scallop.DefaultConverters $$anon $ 2.parseCached (DefaultConverters.scala: 24) в org.rogach.scallop.Scallop $$ anonfun $ verify $ 17.apply (Scallop.scala: 632) в org.rogach.scallop.Scallop $$ anonfun $ verify $ 17.apply(Scallop.scala: 630) в scala.collection.immutable.List.foreach (List.scala: 381) в org.rogach.scallop.Scallop.verify (Scallop.scala: 630) в org.rogach.scallop.ScallopConfBase.verifyBuilder (ScallopConfBase.scala: 405) по адресу org.rogach.scallop.ScallopConfBase.verify (ScallopConfBase.scala: 744) по адресу com.unity3d.ads.conf.OperativeEventConverterConf. (OperativeEventConvality3. com.sc.analytics.TestClass $ .main (TestClass.scala: 51) в com.unity3d.ads.analytics.TestClass.main (TestClass.scala) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl(NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:498) в org.apache.spark .Spark.org $ apache $ spark $ deploy $ 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) в org.apache.spark.deploy.SparkSubmit.main (SparkSubmit.scala)

Точно такой же код отлично работает с scalaVersion := "2.11.8"

К сожалению, мне нужно использовать 2.10.5, потому что я использую версию spark 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 голосов
/ 30 мая 2018

Отвечая на мой вопрос на случай, если кто-то еще столкнется с подобной проблемой.

Это оказалось проблемой classpath.основная причина проблемы:

Я использовал spark 2.1 для запуска кода, скомпилированного с версией spark 1.6.по-видимому, 1.6 использует scala 2.10 .. в то время как spark 2.1 использует scala 2.11 ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...