我正为一个奇怪的运行时错误烦恼:
// File: build.sbt
scalaVersion := "2.10.1"
// File: src/main/scala/bug/Bug.scala
package bug
class Foo(val args: Any*)
case class Bar(id: Int) extends Foo(id)
object Bug extends App {
val msg = Bar(666)
val id = msg.id // boom!
}
如果我使用
sbt run
命令运行此程序。[error] (run-main) java.lang.ClassCastException:
scala.collection.mutable.WrappedArray$ofRef cannot be cast to java.lang.Integer
java.lang.ClassCastException: scala.collection.mutable.WrappedArray$ofRef cannot be
cast to java.lang.Integer
at scala.runtime.BoxesRunTime.unboxToInt(Unknown Source)
at bug.Bar.id(Test.scala:4)
at bug.Bug$delayedInit$body.apply(Test.scala:8)
at scala.Function0$class.apply$mcV$sp(Function0.scala:40)
...
这是什么鬼?这似乎是Scala 2.10.1的一个新bug,因为如果我改为
scalaVersion := "2.10.0"
,它就可以正常运行。有任何解决方法的想法吗?(例如:神奇的编译器标志)