2015-12-20 28 views
7

JavaからJavaScript関数を実行したい。私は、コードJavaメソッドからJavaScriptを呼び出す

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

の以下の部分を使用するが、これはalert()メソッドの例外がスローされますか?

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

( ")" \ HI "警告(\" 'evalのを試してみてください); ' –

答えて

0

Javaからjavacriptを呼び出すことはできません。 JavascriptをJavaなどのサーバー上

アップデートを実行しているクライアントサイドの言語とブラウザ上で実行される: - みんなありがとう、私はここに何か新しいことを学びました。

私はOPでコードを実行すると、私はエラーの下に取得

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

理由はアラートです、それはjavascriptのエンジンが知らない、Nashhornウェブbrowsers.soが提供するウィンドウオブジェクトの一部だ、JavaScriptを一部ではありませんそれについて。

ご覧くださいReferenceError: "alert" is not defined

+0

OPが使用しているスクリプトAPIを使用することができます:https://docs.oracle.com/javase/8/docs/technotes/guides/scripting/prog_guide/api.html – user3707125

+0

スクリプトAPIの助けを借りて基本的なjavascriptを呼び出すことはできますが、あなたが他の解決策を知っていれば、例外をスローするでしょう。user3707125 –

+0

@AbhijitDesai私の更新を参照してください –

2

Soが私はあなたのコードが間違っていると確信しています。

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

お試しください。

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

変数HIが宣言されている場合を除きます。

+0

あなたは引用符をエスケープする必要がありますか? –

+0

Javaでjsを使用するいくつかの例/チュートリアルを参照してください。 –

-1

JavaScriptコードをJavaコードから呼び出すことはできません。クライアント側で実行され、サーバー側で実行されるためです...コードを構造化する方法が間違っている場合でも。

+0

私はそれが.Netでpowershell関数を呼び出すのと変わらないことを意味します。またはSQLステートメント... –

+0

サーバサイドスクリプティングは洗練されたものであり、洗練されたアーキテクチャ – Marged

1

"alert()"は、Webブラウザによって提供されるウィンドウオブジェクトの一部です。 it doesn't exist here

私はJavaコードを変更した:

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

これは便利です:javscriptウィンドウオブジェクトについてJava Scripting Programmer's Guide
情報:The Window Object