【发布时间】:2015-07-12 12:28:42
【问题描述】:
无论我尝试什么,getEngineByName() 总是返回 null。
这是我的代码:
final ScriptEngineManager manager = new ScriptEngineManager();
final ScriptEngine engine = manager.getEngineByName("js");
但engine 在这些行之后为空。
我也试过了:
getEngineByName("javascript")getEngineByName("nashorn")
他们都返回null。实际上,manager.getEngineFactories() 显示的是一个空数组 - 意味着根本没有工厂。
这 2 个答案建议将 null 传递给构造函数,但它对我不起作用:
而this answer 表示这是一个已修复的错误。
更新:
那是 eclipse 中的 Android 应用程序项目。
我不知道它与 Java 项目有多大不同。
现在我刚刚打开了一个新的 Java 项目,写了这些行,我得到了一些结果:
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 不是 null !
此外,javax.script.* 已成功导入,就好像它已经存在(内置)一样。这是因为我使用的是 Java 8 吗?
在之前的 (android) 项目中,我使用的是从 here 下载的 javax.script。
那么,Android 项目会出现什么问题,我该如何解决呢?
【问题讨论】:
-
我有had success 和
getEngineByExtension("js") -
@AndrewThompson,同样的问题...
-
@AlaaM。关于这个问题的任何更新?
-
@AlaaM。我试过了,现在可以了。
val jsEngine = ScriptEngineManager().getEngineByName("rhino")参考此link
标签: java javascript android javax.script