本示例演示如何评估存储在文件中的脚本。我们知道该eval()方法也可以接受一个Reader对象,因此我们可以使用阅读脚本文件FileReader,并将其作为参数传递给的eval()方法以ScriptEngine进行进一步评估。
package org.nhooo.example.script;
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
import javax.script.ScriptException;
import java.io.File;
import java.io.Reader;
import java.io.FileReader;
import java.io.FileNotFoundException;
public class EvalScriptFile {
public static void main(String[] args) {
// 获取ECMAScript / JavaScript ScriptEngine。
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("ECMAScript");
try {
// 创建一个指向我们的File对象的实例
//脚本文件。创建一个FileReader以读取
// 文件传递给ScriptEngine.eval()方法。
//
// 该文件需要与以下文件放在同一文件夹中
//我们的课程,以便能够阅读它。我们可以定义
// 文件的完整路径也使创建更容易
// 读者可以找到它。
File script = new File("helloworld.js");
Reader reader = new FileReader(script);
engine.eval(reader);
} catch (FileNotFoundException | ScriptException e) {
e.printStackTrace();
}
}
}