Question

J'ai essayé d'utiliser Scala Apache Sling 2.8 du moteur de script récemment mis à jour le mois dernier. Je suis venu d'utiliser Scala 2.7 avec moteur de Sling Scala 2.7 Script et a très bien fonctionné. Je rencontre un problème lorsque je tente d'utiliser la nouvelle implémentation. Lorsque vous appelez la fonction eval de ScalaScriptEngine je reçois toujours un « exécution du script d'erreur » en raison d'un NullPointerException. Quelqu'un at-il travaillé d'autre avec la nouvelle version du moteur de script et exécuter dans ce ainsi?

Merci! Steven

Était-ce utile?

La solution

Il y a un bug qui empêche le moteur de script Scala d'être utilisé de manière autonome. Voir https://issues.apache.org/jira/browse/SLING-1877 pour plus de détails et un patch.

Notez également que le correctif appliqué devez toujours définir le chemin de la classe lors de l'utilisation du moteur de script. Ceci est un changement de 2.7.7 où le chemin de classe Java par défaut (à savoir java.class.path) a été utilisé automatiquement. En 2.8, vous devez définir ce l'argument « -usejavacp » explicitement approfondie.

Voici quelques exemples de code montrant l'utilisation autonome du moteur de script 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)
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top