私はJava API 8でNashornを使用しています。Javaパッケージを呼び出すことができないようにjavascriptの実行を保護したいと思います。ScriptEngineManagerメソッドで引数を追加する方法getEngineByName( "nashorn")?
それは次のように可能である:
NashornScriptEngineFactory factory = new NashornScriptEngineFactory();
ScriptEngine engine = factory.getScriptEngine("-strict", "--no-java", "--no-syntax-extensions");
しかし、直接NashornScriptEngineFactory
を使用することは本当に素敵ではありません。
良い方法はScriptEngineManager
を使用することです。 NashornScriptEngineFactory
は、ScriptEngineManager
によって使用される工場で、ScriptEngine
のインスタンスを作成します。それは、このdocumentationで説明されています。
このパッケージには、Nashornを使用する 好ましい方法であるjavax.scriptでの統合を提供します。あなたは、通常Nashornスクリプトエンジンの インスタンスを取得するためにこれを行います。
import javax.script.*; ... ScriptEngine nashornEngine = new ScriptEngineManager().getEngineByName("Nashorn");
私は"-strict", "--no-java", "--no-syntax-extensions"
ようないくつかの追加の引数を与える能力でScriptEngineManager
を使用してScriptEngine
を作成するための解決策を見つけていませんでした。
誰でもこの件に関して私を助けることができますか?前もって感謝します。
私は-Dnashorn.args =を使用します " - 厳密--no-javaの--no-構文の拡張機能"。私はJavaスクリプトapiを使い続けることを好みます。ある日、私が使用するスクリプト言語を変更しても、Javaコードを変更するよりも設定を変更する方が簡単です。ご協力いただきありがとうございます。 –