2012-10-27 43 views
14

我使用Scala 2.10.0RC1和sbt 0.12.1。 什麼原因導致我怎麼修復這個運行時錯誤(在2.9.2上運行正常)?如何解決NoSuchMethodError?

確切的錯誤信息是:

java.lang.NoSuchMethodError: scala.Predef$ArrowAssoc$.extension$$minus$greater(Ljava/lang/Object;Ljava/lang/Object;)Lscala/Tuple2;

+1

您的代碼使用[value class](http://docs.scala-lang.org/sips/pending/value-classes.html)支持進行編譯,但是不帶它執行。你確定你用scala 2.10.0 RC1庫運行它嗎? – senia

+0

我使用sbt 0.12.1與這些scala選項'Seq(「 - unchecked」,「-deprecation」,「-feature」, 「-language:reflectiveCalls」,「 - language:implicitConversions」,「-language:postfixOps 「, 」-language:dynamics「,」 - language:higherKinds「,」 - language:existentials「, 」-language:experimental.macros「)'。我正在sbt內部運行代碼(測試)。我如何驗證它是使用正確的庫? – user1779032

+0

可能在你的Build.sbt文件中有類似'scalaVersion in Test:=「2.9.2」'。 – senia

回答

10

您正在運行與錯誤的Scala版本的代碼。這可能有幾個原因:

  • 與SBT項目的錯誤配置 - 搜索配置文件中的2.9.2
  • 過時的高速緩存由SBT使用 - sbt reboot
  • 別的東西嗎?

如果您仔細檢查所有2.9.2的sbt配置文件,然後清除所有緩存,那麼應該運行得更好。依賴項通常在jar文件的名稱中有一個版本號,所以在系統上運行查找可能會指向您錯過的那個。