2014-08-30 122 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,只需要读几遍。

相关问题