1、JS文件
multiply.js
function multiply(a, b) {
return a * b;
}
add.js
function add(a, b) {
return multiply(a, b);
}
2、JAVA调用JS函数
package test;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public class Test {
public static void main(String[] args) {
try {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
InputStream is = Test.class.getResourceAsStream("/js/add.js");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int len;
while ((len = is.read(buf)) != -1) {
baos.write(buf, 0, len);
baos.flush();
}
String script = baos.toString();
baos.close();
System.out.println(script);
is = Test.class.getResourceAsStream("/js/multiply.js");
baos = new ByteArrayOutputStream();
while ((len = is.read(buf)) != -1) {
baos.write(buf, 0, len);
baos.flush();
}
String script2 = baos.toString();
baos.close();
System.out.println(script2);
engine.eval(script2);
engine.eval(script);
Invocable in = (Invocable) engine;
Object invoke = in.invokeFunction("add", 2, 3);
System.out.println(invoke);
} catch (Exception e) {
e.printStackTrace();
}
}
}