我的Scala程序使用scala.tools.nsc.interpreter.IMain的编译器接口。当我使用scalac编译时,一切都正常。但是当我使用sbt编译时,虽然它仍然编译成功,但在调用IMain实例的interpret方法时,它会抛出以下错误信息:
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项目中使用解释器?
我正在使用Scala 2.9.0和Simple Build Tool 0.7.7
override def fork = forkRun
。解释器可以运行简单的代码,但无法实例化项目中定义的类。我可以为fork添加一个工作目录。但是我应该选择哪一个呢? - Felix Dietzeoverride def fork = forkRun(new File("target/scala_2.9.0/classes"))
这不是一种糟糕的权宜之计吗? - Felix Dietze