We are going to execute the Execute (S1,S2) method in Javascriptmethods.js in Java, and the contents of the Javascriptmethods.js file are as follows:
function execute(s1, s2){ return s1 + s2;}
First we need to define an interface, which gives the same method signature as the JavaScript method to be executed, and we define the interface methods, which reads as follows:
/** * 接口中的方法签名必须与要执行的JavaScript方法一致 * @author yuncong * */publicinterface Methods { publicexecute(String s1,String s2);}
You can then use the script engine to execute the Execute (S1,S2) method in Javascriptmethods.js, which is written in the following Executescript class:
import java.io.FileReader; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; Public class executescript { Public Static voidMain (string[] args) {Scriptenginemanager manager =NewScriptenginemanager (); ScriptEngine engine = Manager.getenginebyname ("JS");Try{String Path = Executescript.class. GetResource (""). GetPath (); SYSTEM.OUT.PRINTLN (path);//FileReader parameter is the path of the JS file to be executedEngine.eval (NewFileReader (path +"Javascriptmethods.js"));if(Engineinstanceofinvocable) {invocable invocable = (invocable) engine; Methods Executemethod = Invocable.getinterface (Methods.class); System.out.println (Executemethod.execute ("Li","Yuncong")); } }Catch(Exception e) {E.printstacktrace (); } }}
Run the Executescript class with the output as follows:
/c:/users/yuncong/git/login/target/classes/executescript/
Liyuncong
Java Execution JavaScript code