我的scala程序正在使用scala.tools.nsc.interpreter.IMain中的编译器接口。当我使用scalac进行编译时,一切都按预期工作。但是当我用sbt编译它仍然编译时,但在执行时它会在从IMain实例调用explain-method时抛出以下错误消息:
Failed to initialize compiler: object scala not found.
** Note that as of 2.8 scala does not assume use of the java classpath.
** For the old behavior pass -usejavacp to scala, or if using a Settings
** object programatically, settings.usejavacp.value = true.
如果我在IMain实例上使用settings.usejavacp.value = true,则会出现以下异常:
java.lang.Error: typeConstructor inapplicable for <none>
我的SBT项目定义:
class Project(info: ProjectInfo) extends DefaultProject(info){
val scalaSwing = "org.scala-lang" % "scala-swing" % "2.9.0"
val scalaCompiler = "org.scala-lang" % "scala-compiler" % "2.9.0"
}
这里有什么问题?我如何在Simple Build Tool Project中使用解释器?
我正在使用 Scala 2.9.0 和简单构建工具0.7.7
答案 0 :(得分:24)
sbt console // Starts a Scala interpreter
以下是新常见问题解答(之前的答案已过时)
http://www.scala-sbt.org/0.12.4/docs/faq.html
您还可以找到最新版本的常见问题解答
请注意,sbt console-quick
加载没有依赖项的控制台。
答案 1 :(得分:6)
查看SBT维基:http://www.scala-sbt.org/0.13/docs/Faq.html#How+do+I+use+the+Scala+interpreter+in+my+code%3F
有一个关于让翻译器运行的条目。
答案 2 :(得分:1)
在最近的sbt版本(0.12和更新版本)中,以下内容应该足够了:
fork in run := true