2012-02-16 113 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版本之間保持向後兼容。