如何使用 jjs 参数启动 java nashorn

How to start java nashorn with jjs arguments

我想读一个nashorn引擎生成的字节码。我发现我需要的参数是 -d=*folder* 我也想应用乐观类型以获得更好的性能,这是由参数 -ot

启用的

我正在通过调用方法初始化引擎:

ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
engine.setBindings(bindings, ScriptContext.ENGINE_SCOPE);
engine.eval(myscriptfile);

但是我还没有找到我应该把 jjs 参数放在哪里。

javax.script API 不允许您传递这些参数。您需要使用显式 Nashorn API 来获取脚本引擎工厂:

import jdk.nashorn.api.scripting.NashornScriptEngineFactory;

NashornScriptEngineFactory factory = new NashornScriptEngineFactory();
ScriptEngine engine = factory.getScriptEngine("--optimistic-types=true", "-d=someFolder");

希望对您有所帮助。

补充一下 Attila 所说的:您可以使用要传递给 Nashorn 的参数设置 "nashorn.args" 系统 属性。

专业人士:您可以在代码中坚持 javax.script API 并仍然传递参数。

缺点:这会影响在此过程中创建的所有 nashorn 引擎 - 而特定于 nashorn 的 API 允许您使用不同的命令行参数创建不同的引擎实例。此外,您可能无法控制某些部署中的系统 属性 设置。