JavaTestNashornJavascript.java
package javatestnashornjavascript; import java.io.FileNotFoundException; import java.io.FileReader; import java.net.URISyntaxException; import java.util.logging.Level; import java.util.logging.Logger; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; /** * @web http://java-buddy.blogspot.com/ */ public class JavaTestNashornJavascript { final String myJavascript = "<path to myjavascript.js>"; JavaTestNashornJavascript(){ ScriptEngineManager scriptEngineManager = new ScriptEngineManager(); ScriptEngine nashorn = scriptEngineManager.getEngineByName("nashorn"); try { FileReader fileReader = new FileReader(myJavascript); nashorn.eval(fileReader); Invocable invocable = (Invocable) nashorn; Object jsResult = invocable.invokeFunction( "javascriptFunction", "Java-Buddy"); System.out.println("result returned to Java from JavaScript: " + jsResult); } catch (FileNotFoundException | ScriptException | NoSuchMethodException ex) { Logger.getLogger(JavaTestNashornJavascript .class.getName()).log(Level.SEVERE, null, ex); } } public static String javaStaticMethod(String para){ System.out.println("javaStaticMethod("+para+") called"); String rev = new StringBuilder(para).reverse().toString(); return rev; }; public static void main(String[] args) throws URISyntaxException { JavaTestNashornJavascript javaTestNashornJavascript = new JavaTestNashornJavascript(); } }
myjavascript.js
var javascriptFunction = function(para){ print("para passed from Java to JavaScript: " + para); var myClass = Java.type("javatestnashornjavascript.JavaTestNashornJavascript"); var revPara = myClass.javaStaticMethod(para); return "Hello " + revPara; };
No comments:
Post a Comment