在 sbt 控制台,sbt 版本 0.13.5,Scala 版本 2.11.1,我可以得到javax.script.ScriptEngine
Scala:
scala> val engine = new javax.script.ScriptEngineManager().getEngineByName("scala")
engine: javax.script.ScriptEngine = scala.tools.nsc.interpreter.IMain@bf78a9
但是,我不能使用它:
scala> engine.eval("3")
[init] error: error while loading Object, Missing dependency 'object scala in compiler mirror', required by /usr/lib/jvm/java-7-openjdk-i386/jre/lib/rt.jar(java/lang/Object.class)
Failed to initialize compiler: object scala in compiler mirror 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.
scala.reflect.internal.MissingRequirementError: object scala in compiler mirror not found.
at ...
根据 SBT FAQ,我应该用 a 做一些魔术Settings
,然后将它传递给我Interpreter
的构造函数。但是,我没有直接创建一个Interpreter
(甚至不清楚我是否间接创建它,因为引擎对象是一个IMain
)。
Scala 有什么方法可以ScriptEngine
在 SBT 控制台上工作吗?