如何在简单构建工具项目中调用scala解释器?

How to call the scala interpreter in a Simple Build Tool project?

我的scala程序正在使用scala.tools.nsc.interpreter.IMain中的编译器接口。当我使用scalac进行编译时,一切都会按预期进行。但是,当我使用sbt进行编译时,它仍然可以编译,但是在执行时,它会从IMain实例的解释方法调用中引发以下错误消息:

1
2
3
4
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,则会收到以下异常:

1
java.lang.Error: typeConstructor inapplicable for <none>

我的SBT项目定义:

1
2
3
4
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"
}

这是怎么了?以及如何在简单构建工具项目中使用解释器?

我正在使用Scala 2.9.0和Simple Build Tool 0.7.7


1
sbt console // Starts a Scala interpreter

这是新的常见问题解答(以前的答案已过时)

http://www.scala-sbt.org/0.12.4/docs/faq.html

您也可以找到有关最新版本的常见问题解答。
请注意,sbt console-quick会加载没有依赖项的控制台。


看看SBT Wiki:http://www.scala-sbt.org/0.13/docs/Faq.html#如何在代码中使用Scala解释器?

其中有一个有关运行解释器的条目。


在较新的sbt版本(0.12和更高版本)中,满足以下条件即可:

1
fork in run := true