编译器错误?java.lang.ClassCastException: scala.collection.mutable.WrappedArray$ofRef 无法转换为 java.lang.Integer。

3

我正为一个奇怪的运行时错误烦恼:

// 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",它就可以正常运行。
有任何解决方法的想法吗?(例如:神奇的编译器标志)

我可能遇到了SI-7268问题吗? - 0__
1个回答

0
根据Jason Zaugg的说法,这是SI-7436问题,并且应该在Scala 2.10.3中进行修复。

实际上它似乎是2.11版本。之前的修复版本错误,现在已经更正为:Scala 2.11.0-M4。 - EECOLOR
没错。当前的2.11.0-M8版本不再出现这个错误了。 - 0__

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接