Scala: java.lang.VerifyError - Несовместимый аргумент функции - ошибка времени выполнения - PullRequest
0 голосов
/ 07 июля 2011

Я использую библиотеки MongoDB Casbah для Scala в смешанном проекте Java / Scala.

Этот код прекрасно работает в REPL:

studentCollection.distinct("districtlea").foreach(x => {
 println(x)
 val q = MongoDBObject("districtlea" -> x)
 val studentWithDistrict = studentCollection.findOne(q)
 studentWithDistrict match {
   case Some(s) => println(s.getAs[String]("districtname").getOrElse("NO DISTRICT NAME FOUND FOR LEA " + x))
   case None => println("NO DISTRICT FOUND WITH LEA ")
}
})

Когда я запускаю его через свойСборка Ant (с тем же classpath, который я использую в REPL), она прекрасно компилируется, но я получаю это во время выполнения:

 [java] java.lang.VerifyError: (class: scala/collection/immutable/List, method: ms$1 signature: (Lscala/collection/immutable/List;Lscala/Function2;)Lscala/collection/immutable/List;) Incompatible argument to function
 [java]     at scala.sys.SystemProperties$.propertyHelp(SystemProperties.scala:57)
 [java]     at scala.sys.SystemProperties$.addHelp(SystemProperties.scala:59)
 [java]     at scala.sys.SystemProperties$.bool(SystemProperties.scala:63)
 [java]     at scala.sys.SystemProperties$.noTraceSupression(SystemProperties.scala:75)
 [java]     at scala.util.control.NoStackTrace$class.fillInStackTrace(NoStackTrace.scala:21)
 [java]     at scala.util.control.BreakControl.fillInStackTrace(Breaks.scala:77)
 [java]     at java.lang.Throwable.<init>(Throwable.java:181)
 [java]     at scala.util.control.BreakControl.<init>(Breaks.scala:77)
 [java]     at scala.util.control.Breaks.<init>(Breaks.scala:30)
 [java]     at scala.collection.Traversable$.<init>(Traversable.scala:103)
 [java]     at scala.collection.Traversable$.<clinit>(Traversable.scala)
 [java]     at scala.package$.<init>(package.scala:37)
 [java]     at scala.package$.<clinit>(package.scala)
 [java]     at scala.Predef$.<init>(Predef.scala:32)
 [java]     at scala.Predef$.<clinit>(Predef.scala)
 [java]     at com.enspire.hive.elements.pub.SelectionJson$$anonfun$1.apply(SelectionJson.scala:17)
...

Последняя строка трассировки этого стека указывает на "val q= ... "line.

Я собрал библиотеки Casbah [2.9.0-1-2.2.0-SNAPSHOT], используя Scala 2.9.0-1, и использую то же самое для его запуска.Я подозреваю, что эта ошибка связана с некоторой библиотекой на пути к классам, созданной с несовместимой версией Scala, но я нигде не могу ее найти и не могу объяснить, почему тот же код работает в REPL стот же путь к классам.Буду признателен за любые идеи о том, где копать дальше.

1 Ответ

2 голосов
/ 07 июля 2011

Похоже, что одна из ваших сторонних библиотек связана со старой версией Scala:

[java] на com.enspire.hive.elements.pub.SelectionJson $$ anonfun $ 1.apply (SelectionJson.scala: 17)

Похоже, это корень порока в неправильной связи.

...