2015-11-19 157 views
6

我試圖安裝SBT斯卡拉,但得到這個奇怪的例外啓動時:斯卡拉SBT拋出IncompatibleClassChangeError異常

Exception in thread "main" java.lang.IncompatibleClassChangeError: Expected static method scala.Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collection/mutable/ArrayOps; 
at xsbt.boot.Boot$.main(Boot.scala:11) 
at xsbt.boot.Boot.main(Boot.scala) 

我的Java版本是

java version "1.8.0_66" 
Java(TM) SE Runtime Environment (build 1.8.0_66-b17) 
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode) 

我通過安裝SBT(家)釀造並獲得0.13.9版本。

我試圖將Java更新到最新版本,但它沒有幫助。 當然,我已經卸載並重新安裝了SBT,無論是否使用自制軟件,但我都得到了同樣的錯誤。我無法弄清楚爲什麼會出現這個錯誤。

+1

'IncompatibleClassChangeError'指示二進制不兼容問題。你在運行什麼版本的Scala?你最近怎麼樣?你是否正在開始某個特定項目? – moem

+0

你可以試試PaulP的'rebel cut'腳本:https://github.com/paulp/sbt-extras - 只需將該文件保存在某處並直接作爲shell腳本運行,而不是原始sbt。 –

+0

@moem我在'Scala版本2.11.7'上。我通過在命令行上運行'$ sbt'來運行SBT。在某個特定項目上啓動SBT時的錯誤是相同的,但是這樣做不會。 @ 0__感謝您的建議,我試過了,但它提供了與上述相同的錯誤。 –

回答

0

從Java擴展目錄中刪除任何無關的JAR文件。在構建BFG Repo-Cleaner,然後在macOS下安裝產生的bfg.jar/Library/Java/Extensions之後,我遇到了同樣的錯誤。之後,sbt失敗,出現上述錯誤消息,直到bfg.jar/Library/Java/Extensions中刪除。

+0

謝謝您的意見!不幸的是我不再有這個問題,所以我無法驗證。但是,謝謝! –