Использование скрипта Scala 2.8 Apache Sling Scala 2.8
-
25-09-2019 - |
Вопрос
Я пытался использовать Apache Slina's Scala 2.8 сценарий, недавно обновленный в прошлом месяце. Я пришел от использования SCALA 2.7 вместе со сценарией SCALA 2.7 SCALA 2.7, который отлично работал. Я столкнулся с проблемой, когда я пытаюсь использовать новую реализацию. При вызове функции Eval CaseScriptEngine я всегда получаю сообщение «Ошибка выполнения скрипта» из-за NullPointerException. Кто-нибудь еще работал с новой сборкой механизма сценария и бегите в этом?
Спасибо! Стерена
Решение
Есть ошибка, которая предотвращает использование автомата Scala Scripting. Видеть 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)
}