2016-05-18 3 views
0

Я пытаюсь создать ScriptEngine с именем "nashorn":ScriptEngine с именем «Насхорн» является нулевым

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

Но я всегда получаю

engine == null 

Почему это происходит? Документы говорят:

Nashorn двигатель ECMAScript (JavaScript) двигатель по умолчанию в комплекте с SE комплекта Java Development Kit (JDK).

Это означает, что двигатель Nashorn является двигателем по умолчанию и должен присутствовать в JDK, не так ли?

+2

Какой JRE вы используете для выполнения вашей программы? – Berger

+0

@Berger, я использую версию JDK 1.6.0_25 с прикрепленной JRE. – 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] 
Смежные вопросы