2014-08-30 159 views
0

我已經創建了一個libs文件夾並將scalascriptengine-1.3.9-2.11.0.jar放置在那裏。之後,我右鍵點擊.jar並選擇Add Library如何在IntelliJ Idea中添加ScalaScriptEngine庫

然後,我創建Test.scala

import java.io.File 

import com.googlecode.scalascriptengine.ScalaScriptEngine 

object Test { 
    def main(args: Array[String]): Unit = { 
    val sourceDir = new File("examples/folder") 
    val sse = ScalaScriptEngine.onChangeRefresh(sourceDir) 
    } 
} 

它正確地識別ScalaScriptEngine,或至少它沒有給出任何警告或錯誤。但它沒有編譯。

按照library page我編輯build.sbt

name := "ScalaScriptEngineTest" 

version := "1.0" 

libraryDependencies += "com.googlecode.scalascriptengine" %% "scalascriptengine" % "1.3.10" 

libraryDependencies += "org.scala-lang" % "scala-compiler" % "2.11.1" 

但是在清涼的,我得到這個:http://pastebin.com/GdirttUJ

我缺少什麼?我學習Scala,這是我想將庫添加到IntelliJ IDEA的第一次...

回答

1

簡短的回答:

更改兩個依賴於你的build.sbt如下條目:

libraryDependencies += 
    "com.googlecode.scalascriptengine" % "scalascriptengine" % "1.3.9-2.10.3" 

libraryDependencies += "org.scala-lang" % "scala-compiler" % "2.10.4" 

注意我並沒有改變版本 - 我用%替換了%%。

這會導致您使用舊版本的ScalaScriptEngine,但我不知道這是否會給您帶來任何問題。

如果您使用sbt構建依賴關係,則不需要手動將jar放置在任何位置。

說明:

從你的日誌我看到SBT正在尋找ScalaScriptEngine斯卡拉2.10。事實上,即使您的sbt文件表達了對2.11編譯器的依賴關係,這實際上與使用ScalaScriptEngine的說明一致,這很清楚您正在運行Scala 2.10.4。

在日誌的第23行,您可以看到它的確切位置。如果您將瀏覽器部分指向that path,您會看到Scala 2.11和另一個目錄scalascriptengine沒有版本限定符。如果你潛入後者,你會發現它是保留所有舊版本的地方。沒有ScalaScriptEngine 1.3.10(你要求的)爲Scala 2.10編譯,所以你的選擇似乎是升級到Scala 2.11(如果你想使用IntelliJ Idea的緊密集成與sbt),或者你可以使用ScalaScriptEngine 1.3.9。

您的Scala編譯器依賴關係基本上存在相同的問題 - 它需要您正在使用的Scala版本。

我已經使用Scala 2.10.4確認了上述解決方案。由於沒有2.10.4的預編譯版本,所以我打了一個快速和鬆散的版本,我賭博說2.10.3版本可能會工作。

替代方案:

有可能是解決這個更清潔的方式,但資料庫的組織方式讓我對此表示懷疑。

您可以使用您選擇的編譯器構建您選擇的版本,或者說服ScalaScriptEngine社區爲您完成並將其放入中央存儲庫,但我的猜測是1.3.10不會與比Scala 2.11低。最後,如果您確實想要手動下載jar,您可能需要閱讀sbt documentation的「Unmanaged dependencies」部分。其實,如果你打算使用sbt,只需要讀幾遍。