Минимально необходимый код для вызова функции без параметров:
package ru.mydesignstudio.mds01; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class RhinoJavaX { public void run() { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("javascript"); String f = "function jsFunction(){" + "print('Hello from JavaScript');" + "}"; try { engine.eval(f); Invocable inv = (Invocable) engine; inv.invokeFunction("jsFunction"); } catch (ScriptException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } } public static void main(String args[]) { RhinoJavaX rhino = new RhinoJavaX(); rhino.run(); } }
После запуска получаем результат:
Hello from JavaScript Process finished with exit code 0
Модифицируем код для вызова JavaScript-функции с параметрами:
package ru.mydesignstudio.mds01; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class RhinoJavaX { public void run() { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("javascript"); String f = "function jsFunction(name){" + "print('Hello from JavaScript to ' + name);" + "}"; try { engine.eval(f); Invocable inv = (Invocable) engine; inv.invokeFunction("jsFunction", "John Smith"); } catch (ScriptException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } } public static void main(String args[]) { RhinoJavaX rhino = new RhinoJavaX(); rhino.run(); } }
Результат:
Hello from JavaScript to John Smith Process finished with exit code 0