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

和自甴很熟 提交于 2019-12-03 11:04:10

问题


my scala program is using the compiler interface from scala.tools.nsc.interpreter.IMain. When I am compiling with scalac, everything works as expected. But when I compile with sbt it still compiles, but on execution it throws the following error message in the call of the interpret-method from the IMain instance:

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.

If I use settings.usejavacp.value = true on the IMain instance, I get the following exception:

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

My SBT project definition:

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"
}

What's wrong here? And how can I use the interpreter in a Simple Build Tool Project?

I'm using Scala 2.9.0 and Simple Build Tool 0.7.7


回答1:


Take a look at the SBT wiki: http://www.scala-sbt.org/0.13/docs/Faq.html#How+do+I+use+the+Scala+interpreter+in+my+code%3F

There's an entry about getting the interpreter running.




回答2:


sbt console // Starts a Scala interpreter

Here is the new FAQ (the previous answer is obsolete)

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

You can find also the FAQ for more recent versions.
Note that sbt console-quick loads the console without the dependencies.




回答3:


In more recent sbt versions (0.12 and newer), the following should suffice:

fork in run := true


来源:https://stackoverflow.com/questions/6315680/how-to-call-the-scala-interpreter-in-a-simple-build-tool-project

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!