无法获得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-ea”
Java(TM)SE运行时环境(版本1.8.0_20-ea-b23)
答案 0 :(得分:16)
当我将null param传递给ScriptEngineManager构造函数时,它正在工作:
ScriptEngine engine = new ScriptEngineManager(null).getEngineByName("nashorn");
engine.eval("print('Hello World!');");
来自java docs
ScriptEngineManager(ClassLoader loader)
如果loader为null,则会加载与平台捆绑在一起并且位于通常扩展目录(已安装的扩展名)中的脚本引擎工厂。
答案 1 :(得分:4)
老问题,但如果你没有任何快乐......你可以试试这个......
ScriptEngine engine = new NashornScriptEngineFactory().getScriptEngine();
答案 2 :(得分:1)
Nashorn是Oracle库,所以如果你没有Oracle Java,那么你应该手动导入它。
答案 3 :(得分:0)
此代码是正确的,可在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/