本示例说明如何获取特定语言名称和特定语言版本的脚本引擎。在下面的代码中,我们尝试获取ECMAScriptversion的脚本引擎实例1.8。
package org.nhooo.example.script; import javax.script.ScriptEngineManager; import javax.script.ScriptEngineFactory; import javax.script.ScriptEngine; import javax.script.ScriptException; import java.util.List; public class ScriptEngineSearch { public static void main(String[] args) { String languageName = "ECMAScript"; String languageVersion = "1.8"; // 创建一个ScriptEngineManager并获取可用列表 // 发动机工厂。 ScriptEngineManager manager = new ScriptEngineManager(); List<ScriptEngineFactory> factories = manager.getEngineFactories(); // 我们从可用的工厂那里获得了ScriptEngine, // 语言名称为ECMAScript,版本为1.6。 // ECMAScript是JavaScript编程的标准名称 //语言。如果找到所需的语言,我们将获得 // 通过调用工厂的getScriptEngine()方法来实现ScriptEngine。 ScriptEngine engine = null; for (ScriptEngineFactory factory : factories) { String language = factory.getLanguageName(); String version = factory.getLanguageVersion(); if (language.equals(languageName) && version.equals(languageVersion)) { engine = factory.getScriptEngine(); break; } } if (engine != null) { try { engine.eval("println('Hello There')"); } catch (ScriptException e) { e.printStackTrace(); } } } }