getEngineByName("nashorn") возвращает ноль
Не могу получить Nashorn двигатель
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-еа"
Java (TM) SE Runtime Environment (сборка 1.8.0_20-ea-b23)
4 ответа
Это работает, когда я передаю нулевой параметр в конструктор ScriptEngineManager:
ScriptEngine engine = new ScriptEngineManager(null).getEngineByName("nashorn");
engine.eval("print('Hello World!');");
из документов Java
ScriptEngineManager (загрузчик ClassLoader)
Если 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
Nashorn - это проект OpenJDK, размещенный здесь: http://openjdk.java.net/projects/nashorn/