Java脚本API无法按名称检索引擎

时间:2017-06-01 14:45:52

标签: java scripting jython rhino

我正在尝试使用Java Scripting API查找已安装的脚本引擎,但出现了问题。

在这个演示程序中,我使用 ScriptEngineManager 来检索工厂并列出我拥有的所有引擎。之后我尝试按名称获取它,但结果为null。

 public class App {
  public static void main(String[] args) {
    ScriptEngineManager manager = new ScriptEngineManager();
    List<ScriptEngineFactory> factories = manager.getEngineFactories();

    for (ScriptEngineFactory factory : factories) {
        System.out.println("\nName : " + factory.getEngineName());
        System.out.println("Version : " + factory.getEngineVersion());
        System.out.println("Language name : " + factory.getLanguageName());
        System.out.println("Language version : " + factory.getLanguageVersion());
        System.out.println("Extensions : " + factory.getExtensions());
        System.out.println("Mime types : " + factory.getMimeTypes());
        System.out.println("Names : " + factory.getNames());
        ScriptEngine engine = manager.getEngineByName(factory.getEngineName());
        if (engine == null) {
            System.out.println("Impossible to find the engine with name " + factory.getEngineName()+"\n");
        }

    }
   }
 }

结果是:

  

版本:1.7版本3 PRERELEASE

     

语言名称:ECMAScript

     

语言版本:1.8

     

扩展程序:[js]

     

Mime类型:[application / javascript,application / ecmascript,text / javascript,text / ecmascript]

     

名称:[js,rhino,JavaScript,javascript,ECMAScript,ecmascript]

     

无法找到名为Mozilla Rhino的引擎

  

姓名:jython

     

版本:2.7.0

     

语言名称:python

     

语言版本:2.7

     

扩展名:[py]

     

Mime类型:[text / python,application / python,text / x-python,application / x-python]

     

名称:[python,jython]

     

无法找到名为jython的引擎

1 个答案:

答案 0 :(得分:1)

查看getnames()的{​​{1}}方法的文档:

  

返回ScriptEngine的短名称的不可变列表,可用于通过ScriptEngineManager识别ScriptEngine。

即,必须使用以下名称之一:

ScriptEngineFactory