getEngineByName ("nashorn") возвратит null
не могу получить Nashorn engine
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
engine.eval("print('Hello World!');");
engine
возвращает null
Я использую eclipse, jdk1.8.0_11
java -version
java версия "1.8.0_20-ea"
Java (TM) SE среда выполнения (build 1.8.0_20-ea-b23)
4 ответов
его работа, когда я передаю null param в конструктор ScriptEngineManager:
ScriptEngine engine = new ScriptEngineManager(null).getEngineByName("nashorn");
engine.eval("print('Hello World!');");
из java docs
ScriptEngineManager (загрузчик загрузчиков классов)
если loader имеет значение null, загружаются фабрики движка скриптов, которые поставляются вместе с платформой и находятся в обычных каталогах расширений (установленных расширений).
старый вопрос, но в случае, если у вас не было никакой радости... вы можете попробовать это вместо этого...
ScriptEngine engine = new NashornScriptEngineFactory().getScriptEngine();
Nashorn-это библиотека Oracle, поэтому, если у вас нет Oracle Java, вы должны импортировать ее вручную.
этот код корректен и работает как на Oracle JDK, так и на OpenJDK.
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
вы должны использовать последнюю версию JDK 8 (версия" ea", которую вы использовали, устарела и, вероятно, глючит).
официальная документация Nashorn здесь: http://docs.oracle.com/javase/8/docs/technotes/guides/scripting/nashorn/intro.html#sthref14
Nashorn-это размещенный проект OpenJDK здесь: http://openjdk.java.net/projects/nashorn/