无论我尝试什么,getEngineByName()
都会返回 null。
这是我的代码:
final ScriptEngineManager manager = new ScriptEngineManager();
final ScriptEngine engine = manager.getEngineByName("js");
但是engine
在这些行之后为空。
我也试过:
getEngineByName("javascript")
getEngineByName("nashorn")
他们都回来了null
。实际上,manager.getEngineFactories()
显示一个空数组 - 意味着根本没有工厂。
这2个答案建议传递null
给构造函数,但它对我不起作用:
这个答案说这是一个已修复的错误。
更新:
那是 Eclipse 中的一个Android 应用程序项目。
我不知道它与Java Project有什么不同。
现在我刚刚打开了一个新的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项目中的问题是什么,我该如何解决呢?