使用Apache吊索的斯卡拉2.8脚本引擎
-
25-09-2019 - |
题
我一直在试图使用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)
}
不隶属于 StackOverflow