Apacheのスリングのスカラ2.8スクリプトエンジンを使用します
-
25-09-2019 - |
質問
私は最近更新され、先月Apacheのスリングのスカラ2.8スクリプトエンジンを使用しようとしてきました。私は、スリングのスカラ2.7スクリプトエンジンと一緒にScalaの2.7を使用してから来て、それがとてもうまくいきました。私は新しい実装を使用しようとすると、私が問題に遭遇します。 ScalaScriptEngineのeval関数を呼び出すとき、私は常に原因とNullPointerExceptionに「エラー実行中のスクリプト」を受け取ります。誰もが他にもこのようにスクリプトエンジンの新しいビルドと協力して実行していますか?
ありがとう! スティーブン
解決
使用済みのスタンドアロンであることからScalaのスクリプトエンジンを防ぐバグがあります。 https://issues.apache.org/jira/browse/SLING-1877詳細とパッチ。
また、パッチが適用されるとあなたはまだスクリプトエンジンを使用する際にクラスパスを設定する必要があることに、注意してください。これは、デフォルトのJavaクラスパス(すなわち、のjava.class.path)を自動的に使用し2.7.7からの変更です。 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