This example is to show how to load the script files to ScriptEngine and evaluate it. In our previous example I have explained how to write script in the Java file and use it in the Java method. In real scenario, scripts written in the external files with bunch of code. We have load the file using the File readers.
This example does the following things:
- Create ScriptEngineManager and ScriptEngine
- Create external script file named Eval.js
- Create FileReader for reading the script file
- Load the script file by passing the FileReader using ScriptEngine.eval() method
- Invoke the methods
JavaScriptEngineEvalExample.java
package javabeat.net.script; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.Reader; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; /** * Load Script File Example * * @author Krishna * */ public class JavaScriptEngineEvalExample { public static void main(String[] args) throws ScriptException, FileNotFoundException, NoSuchMethodException { // Create ScriptEngineManager ScriptEngineManager engineManager = new ScriptEngineManager(); // Create ScriptEngine ScriptEngine engine = engineManager.getEngineByName("ECMAScript"); //Create file and reader instance for reading the script file File file = new File("Eval.js"); Reader reader = new FileReader(file); //Pass the script file to the engine engine.eval(reader); System.out.println("Java Program Output"); //Create invocable instance Invocable invocable = (Invocable) engine; //Invoke the methods defined in the script file invocable.invokeFunction("firstFn", "Eval.js"); } }
Eval.js
println("Loaded the scripts"); function firstFn(name){ println("This Method written in script file : "+name); }
Output…
Loaded the scripts Java Program Output This Method written in script file : Eval.js