Is it possible to use javascript to call a java method?

In java there is a script manager that allows javas call to javascript, for example:

import javax.script.*; public class ExecuteScript { public static void main(String[] args) throws Exception { // create a script engine manager ScriptEngineManager factory = new ScriptEngineManager(); // create a JavaScript engine ScriptEngine engine = factory.getEngineByName("JavaScript"); // evaluate JavaScript code from String engine.eval("print('Welocme to java world')"); } public static void sayHi(){ System.out.println("hihi"); } } 

My question is: if I have a sayHi () function, can I use javascript using a script mechanism to call a Java function? Thank you

+7
source share
3 answers

Quickly hacked from JavaDocs.

 import javax.script.*; public class ExecuteScript { public static void main(String[] args) throws Exception { // create a Java object ExecuteScript es = new ExecuteScript(); // create a script engine manager ScriptEngineManager factory = new ScriptEngineManager(); // create a JavaScript engine ScriptEngine engine = factory.getEngineByName("JavaScript"); // evaluate JavaScript code from String engine.eval("println('Welcome to Java world')"); // add the Java object into the engine. engine.put("es",es); ScriptEngineFactory sef = engine.getFactory(); String s = sef.getMethodCallSyntax("es", "sayHi", new String[0]); // show the correct way to call the Java method System.out.println(s); engine.eval(s); } public static void sayHi(){ System.out.println("hihi"); } } 

Exit

 Welcome to Java world es.sayHi() hihi Press any key to continue . . . 
+5
source

Next snippet

 package org.test.script; import javax.script.*; public class ExecuteScript { public static void main(String[] args) throws Exception { // create a script engine manager ScriptEngineManager factory = new ScriptEngineManager(); // create a JavaScript engine ScriptEngine engine = factory.getEngineByName("JavaScript"); // evaluate JavaScript code from String engine.eval("" + "importPackage(org.test.script);\n" + "print('Welocme to java world\\n');\n" + "ExecuteScript.sayHi();"); } public static void sayHi() { System.out.println("hihi"); } } 

exits

 Welocme to java world hihi 
+7
source

I'm not sure which script manager you use, but Rhino you can do things like

 var date = new java.util.Date(); print(date); 

So, with your example, you can name it as a static method:

 ExecuteScript.sayHi(); 
+1
source

All Articles