2015-12-20 19 views
7

Ich möchte JavaScript-Funktion von Java ausführen. Ich benutze das folgende Stück CodeAufruf von JavaScript von Java-Methode

ScriptEngineManager manager = new ScriptEngineManager();  
ScriptEngine engine = manager.getEngineByName("JavaScript"); 

aber dies löst eine Ausnahme für die alert() Methode?

engine.eval("alert('HI');"); 
+0

Versuchen 'eval ("alert (\" HALLO \ ")"); ' –

Antwort

0

Sie können Javascript von Java in keiner Weise aufrufen. Javascript ist Client-Seite Sprache und auf Browser ausgeführt, in dem als Java auf dem Server

-Update ausgeführt wird: - Danke Jungs ich etwas gelernt neu hier.

, wenn ich den Code in op ausführen i unten Fehlermeldung erhalten

Error executing script: ReferenceError: "alert" is not defined in <eval> at line number 1 

Grund ist Alarm nicht Teil JavaScript ist, es ist Teil des Objektfensters von Web browsers.so bereitgestellt, Nashhorn JavaScript-Engine nicht weiß, darüber.

Bitte sehen ReferenceError: "alert" is not defined

+0

Es ist möglich, durch Skript-API, die OP verwendet: https://docs.oracle.com/javase/8/docs/technotes/guides/scripting/prog_guide/api.html – user3707125

+0

mit Hilfe von Skripting API wir kann einfaches JavaScript aufrufen, aber wir können kein y vordefinierte Methode es wird eine Ausnahme ausgelöst, also, wenn Sie wissen, eine andere Lösung bitte Benutzer3707125 –

+0

@AbhijitDesai Bitte sehen Sie mein Update –

2

So. Ich bin mir ziemlich sicher, dass dein Code hier falsch ist.

engine.eval("alert(HI);"); 

Versuchen.

engine.eval("alert('Hi');"); 

es sei denn, Sie haben eine Variable HI deklariert.

+0

Sie müssen die Zitate um Hi –

+0

entkommen können Sie bitte geben Sie Link, wo ich kann Siehe einige Beispiele/Tutorials zur Verwendung von js in Java –

-1

Sie tun es in die falsche Richtung, Sie können nicht JavaScript-Funktion von Java-Code aufrufen, weil man auf Client-Seite und andere auf Server-Seite ausgeführt wird ... auch wenn Sie das mit einigen API erreichen, ist es falsche Art der Code-Architektur .

+0

Ich meine, es ist nicht anders als Powershell-Funktionen mit .Net aufrufen. Oder Sql-Anweisungen ... –

+0

Serverside Scripting ist eine elegante Sache und kann sogar anspruchsvolle Architektur sein – Marged

1

Es scheint, dass "alert()" Teil des von Webbrowsern bereitgestellten Fensterobjekts ist. it doesn't exist here

Ich habe modifizierte Java-Code:

ScriptEngineManager manager = new ScriptEngineManager();  
ScriptEngine engine = manager.getEngineByName("JavaScript"); 
engine.eval("print('HI');"); 

Dies ist nützlich: Java Scripting Programmer's Guide
Informationen über javscript Fensterobjekt: The Window Object