Beispiel für eine Java-ScriptEngine

Dieses Beispiel zeigt, wie über JavaScript-Anweisungen auf das Java-Objekt zugegriffen wird. Java unterstützt den JavaScript-Zugriff mit dem ScriptEngineManager Klasse und ScriptEngine-Schnittstelle. Hier sehen Sie, wie wir den JavaScript-Code mithilfe der Java-APIs ausführen können.

  • Erstellen Sie ScriptEngineManager, der den Status aller Skript-Engines verfolgt.
  • Erstellen ScriptEngine durch die Verwendung der Methode getEngineByExtension() definieren in ScriptEngineManager. Hier übergeben wir den Parameter „js“, um die JavaScript-Engine zu erhalten.
  • Fügen Sie das Java-Objekt hinzu, das im Skript verwendet wird
  • Bewerten Sie das JavaScript mit der Methode ScriptEngine.eval()

Schauen wir uns das Beispiel an.

ScriptEngineExample.java

package javabeat.net.script;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

/**
 * Invoke Java from JavaScript example.
 *
 * @author Krishna
 *
 */
public class ScriptEngineExample {
	public static void main(String() args) {
		// Create Java array with list of cities
		String cities() = { "London", "NewYork", "Sydney", "Bangalore",
				"Chennai", "Mumbai" };

		// Create script which accessing Java object
		String script = "var index; " + "var cities = citiesArray;" + ""
				+ "for (index in cities) { " + "println(cities(index));" + "}";

		// Create ScriptEngine
		ScriptEngineManager engineManager = new ScriptEngineManager();
		ScriptEngine engine = engineManager.getEngineByExtension("js");

		// Add Java object to script engine
		engine.put("citiesArray", cities);
		try {
			// Evaluate  script using script engine
			engine.eval(script);
		} catch (ScriptException exception) {
			exception.printStackTrace();
		}
	}
}

Ausgabe…

London
NewYork
Sydney
Bangalore
Chennai
Mumbai

javax.script.ScriptException

Wenn Sie im Skript eine Syntax vermissen, erhalten Sie die folgende Ausnahme.

javax.script.ScriptException: sun.org.mozilla.javascript.internal.EvaluatorException: missing ( after for (<Unknown source>#1) in <Unknown source> at line number 1
	at com.sun.script.javascript.RhinoScriptEngine.eval(Unknown Source)
	at com.sun.script.javascript.RhinoScriptEngine.eval(Unknown Source)
	at javax.script.AbstractScriptEngine.eval(Unknown Source)
	at javabeat.net.script.ScriptEngineExample.main(ScriptEngineExample.java:31)
Caused by: sun.org.mozilla.javascript.internal.EvaluatorException: missing ( after for (<Unknown source>#1)
	at sun.org.mozilla.javascript.internal.DefaultErrorReporter.runtimeError(Unknown Source)
	at sun.org.mozilla.javascript.internal.DefaultErrorReporter.error(Unknown Source)
	at sun.org.mozilla.javascript.internal.Parser.addError(Unknown Source)
	at sun.org.mozilla.javascript.internal.Parser.addError(Unknown Source)
	at sun.org.mozilla.javascript.internal.Parser.reportError(Unknown Source)
	at sun.org.mozilla.javascript.internal.Parser.reportError(Unknown Source)
	at sun.org.mozilla.javascript.internal.Parser.reportError(Unknown Source)
	at sun.org.mozilla.javascript.internal.Parser.forLoop(Unknown Source)
	at sun.org.mozilla.javascript.internal.Parser.statementHelper(Unknown Source)
	at sun.org.mozilla.javascript.internal.Parser.statement(Unknown Source)
	at sun.org.mozilla.javascript.internal.Parser.parse(Unknown Source)
	at sun.org.mozilla.javascript.internal.Parser.parse(Unknown Source)
	at sun.org.mozilla.javascript.internal.Context.compileImpl(Unknown Source)
	at sun.org.mozilla.javascript.internal.Context.compileReader(Unknown Source)
	at sun.org.mozilla.javascript.internal.Context.compileReader(Unknown Source)
	at sun.org.mozilla.javascript.internal.Context.evaluateReader(Unknown Source)
	... 4 more

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen