Как запустить java nashorn с аргументами jjs

Я хотел бы прочитать байт-код, сгенерированный движком nashorn. Я обнаружил, что аргумент, который мне нужен, это -d=*folder*, и я хотел бы применить оптимистичные типы для повышения производительности, которые включены с помощью arguments-ot

Я инициализирую движок, вызывая методы:

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

Но я не нашел, где я должен помещать аргументы jjs.


person user2749903    schedule 13.09.2015    source источник


Ответы (2)


javax.script API не позволяет передавать эти аргументы. Вам нужно будет использовать явный Nashorn API, чтобы получить фабрику обработчиков сценариев:

import jdk.nashorn.api.scripting.NashornScriptEngineFactory;

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

Надеюсь, это поможет.

person Attila Szegedi    schedule 13.09.2015

В дополнение к тому, что сказал Аттила: вы можете установить системное свойство «nashorn.args» с аргументами, которые вы хотите передать в Nashorn.

За: вы можете придерживаться javax.script API в своем коде и по-прежнему передавать аргументы.

Против: это влияет на все движки nashorn, созданные в процессе, в то время как API, специфичный для nashorn, позволяет создавать разные экземпляры движка с разными аргументами командной строки. Кроме того, у вас может не быть контроля над параметрами системных свойств в некоторых развертываниях.

person A. Sundararajan    schedule 15.09.2015