2016-05-18 20 views
0

我試圖與名稱"nashorn"創建ScriptEngineScriptEngine的名稱爲 「犀牛」 是空

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

但我總是得到

engine == null 

這究竟是爲什麼?文檔說:

Nashorn引擎是與Java SE開發工具包(JDK)捆綁在一起的默認ECMAScript(JavaScript)引擎 。

這意味着Nashorn引擎是默認引擎,必須存在於JDK中,不是嗎?

+2

你使用哪個JRE來執行你的程序? – Berger

+0

@Berger,我正在使用附帶JRE的JDK 1.6.0_25版本。 – Ksenia

+1

你也可以列出所有引擎,或按類型獲取引擎:js。 –

回答

4

這裏一個小片段列出所有引擎都支持

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]