Rufen Sie externe JavaScript-Funktionen aus Java-Code auf
Dieser Artikel behandelt das Einbinden einer JavaScript-Quelle in ein Java-Programm und das Aufrufen einer JavaScript-Funktion aus einem Java-Code.
Rufen Sie externe JavaScript-Funktionen aus Java-Code auf
Das Aufrufen einer JavaScript-Quelle in Java ist ziemlich einfach. Wenn wir eine Java-Anwendung entwickeln, in der wir JavaScript verwenden müssen, erstellen wir die Skriptdatei separat, fügen sie dann in die Java-Quelle ein und rufen sie auf, um die gewünschte Funktion auszuführen.
Betrachten wir als Beispiel folgendes Szenario.
Zuerst müssen wir Funktionen in einer separaten JavaScript-Datei definieren, die in unserem Java-Code aufgerufen wird. Wir haben eine JavaScript-Quelle erstellt, um arithmetische Aufgaben wie das Addieren zweier übergebener Werte auszuführen.
Beispiel:
var myCalculations = new Object();
myCalculations.addition = function(v1, v2) v1 + v2;
In dieser JavaScript-Quelle haben wir ein neues Objekt erstellt, myCalculations
. In diesem Objekt haben wir eine definierte Additionsfunktion, die 2 Werte als Argument nimmt und sie addiert.
Wir müssen diese Quelle mit der Erweiterung .js
speichern, da dies unser JavaScript-Dokument sein wird. Um dieses Skript zu laden und das Objekt zu erhalten, müssen wir die Funktion eval()
von ScriptEngineManager
verwenden.
ScriptEngineManager
ist eine standardmäßige Java-Bibliothek, die in einen Java-Code importiert werden kann. Wir können eine Instanz dieser Bibliothek verwenden, um die Skripte zu laden.
Wir können die JavaScript-Datei wie unten gezeigt laden:
String javascriptPath = "drive:/folder/fileName.js";
engine.eval("load('" + javascriptPath + "')");
Object myCalculations = engine.get("myCalculations");
Jetzt können wir die gewünschte Funktion nach Namen abrufen und die Parameter übergeben, wie unten gezeigt:
Object addingResult = inv.invokeMethod(myCalculations, "addition", x, y);
Hier ist ein Beispiel für ein vollständiges Java-Programm, das eine JavaScript-Datei mit ScriptEngineManager
verwendet.
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public class Main {
public static void main(String[] args) throws Exception {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
Invocable inv = (Invocable) engine;
String javascriptPath = "drive:/folder/fileName.js";
engine.eval("load('" + javascriptPath + "')");
Object myCalculations = engine.get("myCalculations");
int x = 10;
int y = 5;
Object addingResult = inv.invokeMethod(myCalculations, "addition", x, y);
System.out.println("Your addition result will be: " + addingResult);
}
}
Ausgang:
Your addition result will be: 15
Code-Erklärung:
- In den obigen Java-Code haben wir zuerst eine nützliche Bibliothek,
ScriptEngineManager
, importiert, um das Skript zu laden. - In der Hauptfunktion haben wir eine Instanz von
ScriptEngineManager
erstellt und die Script-Engine mit dem Namen JavaScript definiert. - Nun haben wir eine String-Variable deklariert, der der Pfad der JavaScript-Datei zugewiesen wird.
- Dann laden wir diesen Pfad mit der Methode
engine.eval()
. - Nun haben wir das Objekt
myCalculations
der JavaScript-Datei aufgerufen und damit die Funktion dieses Objekts aufgerufen. - Schließlich haben wir 2 Werte vom Typ Integer in der Funktion übergeben und das Ergebnis im Terminal mit der Java-Standardfunktion
System.out.println("alles, was Sie drucken möchten")
angezeigt.