2012-02-16 108 views
3

我最近降级为斯卡拉2.8,现在每当我试图初始化一个演员,我收到以下错误信息初始化演员时:的NoSuchMethodError斯卡拉2.8

java.lang.NoSuchMethodError: scala.actors.ReactorCanReply$class.$init$(Lscala/actors/ReactorCanReply;)V 

显然this guy有同样的问题,但没有解决方案被发现。有没有其他人遇到过这个问题并解决它?

我以为可能在Scala 2.8和2.9之间的背景中出现了一些sonfusion,所以我尝试卸载并重装Scala和Eclipse,删除所有的二进制文件和重建,甚至创建一个新的Eclipse项目和复制我的源文件,但问题依然存在。

我的堆栈跟踪:

Exception in thread "main" java.lang.NoSuchMethodError: scala.actors.ReactorCanReply$class.$init$(Lscala/actors/ReactorCanReply;)V 
at uk.mike.blackjack.PlayerReceiver.<init>(PlayerReceiver.scala:11) 
at uk.mike.blackjack.Blackjack$.main(Blackjack.scala:141) 
at uk.mike.blackjack.Blackjack.main(Blackjack.scala) 
+2

您是否将Scala 2.9.x二进制文件与2.8二进制文件混合?这通常会导致这些错误。 – leedm777 2012-02-16 14:52:10

+0

可能。我尝试删除和重建所有的二进制文件,但也许Eclipse做了一些奇怪的事情。 – MikeFHay 2012-02-17 14:48:06

+1

更多的上下文(如可能的堆栈跟踪)会有所帮助。 – leedm777 2012-02-17 15:14:09

回答

1

的Java字节码,从斯卡拉编译不是向后兼容。当您在Scala 2.10发布之前升级到任何新的Scala版本时,您必须重新编译所有的scala文件及其依赖项。

顺便说一句:斯卡拉2.10承诺将来在所有2.10.x版本之间保持向后兼容。