After Java 7, you can call functions in JavaScript in Java code, see the following example:
PackageCom.lee;Importjava.io.FileNotFoundException;ImportJava.io.FileReader;ImportJava.util.Scanner;Importjavax.script.Bindings;Importjavax.script.Invocable;ImportJavax.script.ScriptContext;ImportJavax.script.ScriptEngine;ImportJavax.script.ScriptEngineManager;Importjavax.script.ScriptException;/** * * @authorLiyanxue*/ Public classJavainvokejs { Public Static voidMain (string[] args)throwsFileNotFoundException, Scriptexception, nosuchmethodexception {scriptengine engine=NewScriptenginemanager (). Getenginebyname ("JavaScript" ); Bindings Bind=engine.createbindings (); Bind.put ("Factor", 0); Engine.setbindings (Bind, ScriptContext. Engine_scope); //Input Mode /*Scanner input = new Scanner (system.in); while (Input.hasnextint ()) {int first = Input.nextint (); int second = Input.nextint (); SYSTEM.OUT.PRINTLN ("Input parameters are:" + First + "," + second); Engine.eval (New FileReader ("/users/liyanxue/model.js")); if (engine instanceof invocable) {invocable in = (invocable) engine; Executes the JS function Double result = (double) in.invokefunction ("formula", first, second); SYSTEM.OUT.PRINTLN ("The result of the operation is:" + result.intvalue ()); } } */ intFirst = 23; intSecond = 7; System. Out.println ("The input parameters are:" + First + "," +second); Engine.eval (NewFileReader ("/users/liyanxue/model.js" )); if(Engineinstanceofinvocable) {invocable in=(invocable) engine; //Execute the JS functionDouble result = (double) in.invokefunction ("formula", first, second); System. Out.println (The result of the operation is: "+Result.intvalue ()); } }}
The code in/users/liyanxue/model.js:
function formula (VAR1, var2) { return var1 + var2 +
Example of Java calling Javascript functions