1.建立一个main.js
function cal(var1,var2)
{
return var1+var2*var3;
}
2.建立一个 java测试文件
package com.test.java;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import javax.script.Bindings;
import javax.script.Invocable;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class TestJava {
/**
* @param args
*/
public static void main(String[] args) {
try {
new TestJava().testJS();
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("exception" + e.toString());
}
}
private void testJS() throws FileNotFoundException, ScriptException, NoSuchMethodException {
ScriptEngine engine = new ScriptEngineManager()
.getEngineByName("javascript");
Bindings bind = engine.createBindings();
bind.put("var3", 2);
engine.setBindings(bind, ScriptContext.ENGINE_SCOPE);
int var1 = 5;
int var2 = 6;
FileReader fileReader = new FileReader("D:\\android\\workspace\\testJava\\src\\com\\test\\java\\main.js");
engine.eval(fileReader);
try {
fileReader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (engine instanceof Invocable) {
Invocable in = (Invocable) engine;
Double result;
result = (Double) in.invokeFunction("cal", var1, var2);
System.out.println("result:" + result.intValue());
}else{
System.out.println("error 2");
}
}
}