How To Run External JavaScript File using ScriptEngine

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



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
		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");



println("Loaded the scripts");
function firstFn(name){
	println("This Method written in script file : "+name);


Loaded the scripts
Java Program Output
This Method written in script file : Eval.js



About Krishna Srinivasan

He is Founder and Chief Editor of JavaBeat. He has more than 8+ years of experience on developing Web applications. He writes about Spring, DOJO, JSF, Hibernate and many other emerging technologies in this blog.