java - 名称为 "nashorn"的 ScriptEngine 为空

标签 java java-6 java-scripting-engine

我正在尝试创建名为 "nashorn"ScriptEngine:

ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");
if (engine == null) {
     System.out.println("engine == null");
} 

但我总是得到

engine == null

为什么会发生这种情况?文档说:

The Nashorn engine is the default ECMAScript (JavaScript) engine bundled with the Java SE Development Kit (JDK).

这意味着 Nashorn 引擎是默认引擎并且必须存在于 JDK 中,不是吗?

最佳答案

这里有一个小片段列出所有支持的引擎

public class Script {
    public static void main(String[] args) throws ScriptException {
        new ScriptEngineManager().getEngineByName("js")
           .eval("print('Hello from Java\\n');");
        for (ScriptEngineFactory se : new ScriptEngineManager().getEngineFactories()) {
            System.out.println("se = " + se.getEngineName());
            System.out.println("se = " + se.getEngineVersion());
            System.out.println("se = " + se.getLanguageName());
            System.out.println("se = " + se.getLanguageVersion());
            System.out.println("se = " + se.getNames());
        }
    }
}

Java 6 (1.6.0_43)

Hello from Java
se = Mozilla Rhino
se = 1.6 release 2
se = ECMAScript
se = 1.6
se = [js, rhino, JavaScript, javascript, ECMAScript, ecmascript]

Java 7 (1.7.0_40)

Hello from Java                                                  
se = Mozilla Rhino                                               
se = 1.7 release 3 PRERELEASE                                    
se = ECMAScript                                                  
se = 1.8                                                         
se = [js, rhino, JavaScript, javascript, ECMAScript, ecmascript] 

Java 8 (1.8.0_74)

Hello from Java

se = Oracle Nashorn
se = 1.8.0_74
se = ECMAScript
se = ECMA - 262 Edition 5.1
se = [nashorn, Nashorn, js, JS, JavaScript, javascript, ECMAScript, ecmascript]

关于java - 名称为 "nashorn"的 ScriptEngine 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37300083/

相关文章:

java - 如何在java中解压zip文件中的zip文件

java - Jersey(JAX-RS)如何使用多个可选参数映射路径

jaxb - future 版本的 JDK(JDK 7,8 和 OpenJDK)中对 Sun 的 CodeModel 的支持

javascript - Rhino:能够暂停、保存状态和恢复 javascript

java - 如何实现 isValid 连接以与 Oracle 驱动程序 class12 一起使用?

java - 写入SD卡!安卓,txt数据

java - 使用泛型和通配符进行合适的设计

java - 如何在Windows平台上更新Weblogic和JDK?

java - 如何让 OSGi ScriptEngineManager 运行