我正在尝试使用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的引擎
答案 0 :(得分:1)
查看getnames()
的{{1}}方法的文档:
返回ScriptEngine的短名称的不可变列表,可用于通过ScriptEngineManager识别ScriptEngine。
即,必须使用以下名称之一:
ScriptEngineFactory