Frage

Ich habe versucht, Apache Sling Scala 2.8 Script Engine aktualisiert im letzten Monat zu verwenden. Ich kam aus mit Scala 2.7 zusammen mit Sling Scala 2.7 Script Engine und das hat super funktioniert. Ich laufe in ein Problem, wenn ich versuche, die neue Implementierung zu verwenden. Wenn ScalaScriptEngine der eval-Funktion aufrufen erhalte ich immer ein „Fehler beim Ausführen von Skript“ aufgrund einer Nullpointer. Hat jemand anderes mit dem neuen Build des Script-Engine und führte in dem so gut?

gearbeitet

Danke! Steven

War es hilfreich?

Lösung

Es ist ein Fehler, der die Scala Scripting-Engine durch Betrieb Standalone verhindern. Siehe https://issues.apache.org/jira/browse/SLING-1877 für Details und ein Patch.

Beachten Sie auch, dass bei der Installation der Patches Sie noch den Klassenpfad festlegen müssen, wenn das Scripting-Engine. Dies ist eine Änderung gegenüber 2.7.7, wo der Standard-Java-Klassenpfad (d.h. java.class.path) automatisch verwendet wurde. In 2.8 haben Sie '-usejavacp Argument dieses ausdrücklich gründlich das einzustellen.

Hier ist ein Beispielcode der Standalone-Nutzung der Scala Scripting-Engine demonstriert:

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)
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top