Вопрос

Я пытался использовать 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)
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top