示例代码如下:
test.js
function sum(a, b)
{
return a+b;
}
var LinkedList = Java.type("java.util.LinkedList");
var ArraysOfInt = Java.type("int[]");
var printer = java.lang.System.out;
var list = new LinkedList;
list.add(1);
list.add(2);
print("the list is: " + list);
var array = new ArraysOfInt(3);
printer.println("the length of array is : "+array.length);
ScopeTest.java
import java.io.FileNotFoundException;
import java.io.FileReader;
import javax.script.*;
public class ScopeTest
{
private static final String jsFile = "./test.js";
public static void main(String[] args) throws Exception
{
String script = "print(greeting)";
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
// Attribute from ScriptEngineManager
manager.put("greeting", "Hello from ScriptEngineManager");
engine.eval(script);
// Attribute from ScriptEngine
engine.put("greeting", "Hello from ScriptEngine");
engine.eval(script);
// Attribute from eval method
ScriptContext context = new SimpleScriptContext();
context.setAttribute("greeting", "Hello from eval method",
ScriptContext.ENGINE_SCOPE);
engine.eval(script, context);
executeFromFile();
}
private static void executeFromFile()
{
try {
ScriptEngine engine = ScriptUtil.executeScript(new FileReader(jsFile));
System.out.println("sum of 1 and 2 is: " + engine.eval("sum(1, 2)"));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (ScriptException e) {
e.printStackTrace();
}
}
private static class ScriptUtil {
public static ScriptEngine executeScript(String function) throws ScriptException {
ScriptEngineManager engineManager = new ScriptEngineManager();
ScriptEngine engine = engineManager.getEngineByName("nashorn");
engine.eval(function);
return engine;
}
public static ScriptEngine executeScript(FileReader file) throws ScriptException {
ScriptEngineManager engineManager = new ScriptEngineManager();
ScriptEngine engine = engineManager.getEngineByName("nashorn");
engine.eval(file);
return engine;
}
}
}