2016-08-01 3 views
0

У меня есть проект для завершения, и я не могу использовать javax.script, поэтому могу ли я использовать Nashorn, но не использовать javax.script?Используйте Nashorn, но не javax.script

+0

Не так ясный вопрос, не могли бы вы немного подробнее? Вы используете последнюю версию java? вы импортировали JDK или JRE в свою среду IDE? что вы имеете в виду, используя Nashorn, но не используете javax.script? Вы читали простой учебник, например [this] (http://winterbe.com/posts/2014/04/05/java8-nashorn-tutorial/) – AntJavaDev

+0

Конечно, вы можете использовать Nashorn. Используйте jjs из командной строки. В противном случае используйте javax.script.ScriptEngine из кода. Мне было бы интересно узнать, почему вы думаете, что не можете использовать javax.script. Это часть среды выполнения Java, так же, как и другой класс в Java 8. Возможно [проблема X-Y] (http://xyproblem.info/). – ManoDestra

ответ

1

Вы можете использовать инструмент командной строки «jjs» в jdk/bin для оценки скриптов. Этот инструмент может оценивать скрипты из файлов/URL-адресов или может также работать в интерактивном режиме. Инструмент не использует javax.script API - но использует Nashorn напрямую

1

Вы можете использовать Nashorn API напрямую, например. вы можете начать с класса jdk.nashorn.api.scripting.NashornScriptEngineFactory, но многие API неявно полагаются на пакет javax.script позже. Я не уверен, почему у вас есть ограничение; javax.script стандартный пакет JDK, это в каждое время выполнения Java, так как вокруг Java 1.5 или 6.

Тем не менее, прямое использование API позволяет получить индивидуальные ScriptEngine с, потому что NashornScriptEngineFactory имеют некоторые перегрузки для метода getScriptEngine(), которые позволяют вам pass jjs аргументы командной строки, пользовательский загрузчик классов для использования движком и т. д.

Еще одна важная вещь, связанная с тем, что использование API Nashorn напрямую вас закупает, заключается в том, что вы будете знать, что вы определенно получаете двигатель Nashorn, что-то, что вы не можете быть уверены в том, что просто попросите JS-двигатель от javax.script.