我一直在试图使用Apache吊带的斯卡拉2.8脚本引擎最近更新的最后一个月。我从吊带的斯卡拉2.7脚本引擎使用沿着斯卡拉2.7来了,这真是棒极了。我碰到一个问题,当我尝试使用新的实现。当调用ScalaScriptEngine的eval函数,我总是收到“错误执行脚本”,因为一个NullPointerException。有没有其他人的脚本引擎的新的建设工作,碰上这个呢?

谢谢! 史蒂芬

有帮助吗?

解决方案

有是防止Scala的脚本引擎被使用的独立的错误。请参见 https://issues.apache.org/jira/browse/SLING-1877有关详细信息和补丁。

另外请注意,随着应用的补丁,你仍然需要使用脚本引擎时,设置类路径。这是从一个2.7.7改变其中被自动使用默认的Java类路径(即java.class.path)。 2.8你必须设置这个明确彻“-usejavacp”的说法。

下面是一些示例代码演示的Scala脚本引擎的独立用法:

def testScalaScriptEngine() {
  val scriptEngineFactory = new ScalaScriptEngineFactory

  val settings = new ScalaSettings()
  settings.parse("-usejavacp")
  scriptEngineFactory.getSettingsProvider.setScalaSettings(settings)

  val scriptEngine = scriptEngineFactory.getScriptEngine

  val script = """
  package script {
    class Demo(args: DemoArgs) {
      println("Hello")
    }
  }
  """
  scriptEngine.getContext.setAttribute("scala.script.class", "script.Demo", ScriptContext.ENGINE_SCOPE)
  scriptEngine.eval(script)
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top