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

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

Comments

comments

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.

Speak Your Mind

*