Что бы я ни пытался, getEngineByName()
продолжает возвращать значение null.
Вот мой код:
final ScriptEngineManager manager = new ScriptEngineManager();
final ScriptEngine engine = manager.getEngineByName("js");
Но engine
после этих строк пустое.
Я также пробовал:
getEngineByName("javascript")
getEngineByName("nashorn")
Все они возвращают null
. На самом деле manager.getEngineFactories()
показывает пустой массив, что означает, что заводов вообще нет.
Эти 2 ответа предлагают передать null
конструктору, но у меня это не сработало:
И этот ответ говорит, что это ошибка, которая исправлено.
Обновление:
Это был проект приложений для Android в eclipse.
Я не знал, что это так сильно отличается от проекта Java.
Теперь я только что открыл новый Java Project, написал эти строки и получил некоторые результаты:
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import javax.script.SimpleBindings;
public class TestClass {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = scriptEngineManager.getEngineByName("js");
}
}
engine
не нуль!
Кроме того, javax.script.*
был успешно импортирован, как будто он уже есть (встроен). Это потому, что я использую Java 8?
В этом предыдущем проекте (для Android) я использовал javax.script, загруженный с здесь а>.
Итак, в чем может быть проблема в Android Project и как ее решить?
getEngineByExtension("js")
- person Andrew Thompson   schedule 03.05.2015val jsEngine = ScriptEngineManager().getEngineByName("rhino")
перейдите по этой ссылке - person Shailendra Madda   schedule 19.06.2021