【问题标题】:How to start java nashorn with jjs arguments如何使用 jjs 参数启动 java nashorn
【发布时间】:2015-09-13 12:04:55
【问题描述】:
我想读取由 nashorn 引擎生成的字节码。我发现我需要的参数是-d=*folder*,我也想应用乐观类型以获得更好的性能,这些参数由argument-ot启用
我正在通过调用方法来初始化引擎:
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
engine.setBindings(bindings, ScriptContext.ENGINE_SCOPE);
engine.eval(myscriptfile);
但我还没有找到我应该把 jjs 参数放在哪里。
【问题讨论】:
标签:
javascript
java
nashorn
【解决方案1】:
javax.script API 不允许您传递这些参数。您需要使用显式 Nashorn API 来获取脚本引擎工厂:
import jdk.nashorn.api.scripting.NashornScriptEngineFactory;
NashornScriptEngineFactory factory = new NashornScriptEngineFactory();
ScriptEngine engine = factory.getScriptEngine("--optimistic-types=true", "-d=someFolder");
希望对您有所帮助。
【解决方案2】:
补充 Attila 所说的:您可以使用要传递给 Nashorn 的参数设置“nashorn.args”系统属性。
专业人士:您可以在代码中坚持使用 javax.script API 并仍然传递参数。
Con:这会影响在进程中创建的所有 nashorn 引擎 - 而 nashorn 特定 API 允许您使用不同的命令行参数创建不同的引擎实例。此外,您可能无法控制某些部署中的系统属性设置。