問題タブ [scriptengine]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1878 参照

java - Java から ScriptEngine を使用してカスタム スクリプト関数を呼び出す

Python、Groovy、および JavaScript で記述された異なるスクリプト ファイルに同じ名前の同じカスタム関数があります。ユーザーは、使用するスクリプトの 1 つを選択できます。これらのスクリプトから一般的な方法で関数を呼び出したいです。

このようにして、「CustomJs.js」または「Customgroovy.groovy」でリーダーファイルを変更して、ScriptEngineManager パラメーターを「javascript」または「groovy」に変更しても関数を呼び出すことができます。

invokeFunctionただし、以下のように使用せずに関数を呼び出す方法はあるのでしょうか。

まず、スクリプトを評価し、結果をバインドしてから、このオブジェクトの関数を呼び出します。

このような方法がある場合、または他の提案がある場合、これは私にとって最も一般的な方法ですか?

0 投票する
1 に答える
834 参照

java - JavaScript オブジェクトのフィールド値の取得

一部のアプリケーションのカスタマイズを許可するために rhino を使用しています。Java から呼び出される JavaScript 関数の例を次に示します。

その後、Java アプリケーションは、必要に応じて返されたオブジェクトの値を取得できます。

rhino が JVM の一部になったので、Rhino API の代わりにスクリプト API を使用したいと考えていますが、Java コードから JavaScript オブジェクトのフィールド値を取得する方法が見つかりません。

0 投票する
1 に答える
691 参照

java - JavaScript ScriptEngine が Google App Engine for Java (GAE/J) 内で動作しない

ScriptEngine eval を使用しようとすると、常に 0 の値が返されるという問題があります。Logger を使用することで、NullPointerExceptions が生成されていることを確認できました。さらに調べてみると、GAE は常に有効なスクリプト エンジンを返すとは限らないようです (あるとしても)。これは、使用しようとすると例外がスローされるためです。

私のコードは次のようになります:

WebApp としてローカルで実行すると、すべて正常に動作します (Eclipse と Netbeans の両方で、Tomcat と Glassfish 4.0 内で)。

私が評価しようとした文字列のいくつか:

  • 62.0 / 100
  • 0.0 * 352.0
  • (0 - 428) * 1000
  • (0 - 597) * 1000
  • 73.0 / 100

注: 0 または 0.0 は、以前の呼び出しで失敗した他の評価からのものです。この関数はエラー時に 0 を返すため。

Google の JRE Class Whitelistによると、ScriptEngineManager および ScriptEngine クラスが許可されています。そのため、なぜ期待どおりに機能しないのかわかりません。

助言がありますか?

前もって感謝します、

ランディ

0 投票する
1 に答える
708 参照

java - Java ScriptEngine - インポートを無効にする

私はどこでも検索して何も見つからなかったので、Java の組み込み JavaScript エンジンを使用したいと思いますが、ユーザーは次のような Java クラスをインポートできません。

また

また

0 投票する
1 に答える
539 参照

java - Java の JavaScript エンジンの未定義オブジェクト

Java7 で次のコードを実行する

エラーが発生します

JavaScript のように、未定義のオブジェクトを null/false に評価するオプションはありますか?

「x&y」の代わりに「this.x&this.y」のようなことを行うオプションがあることは知っていますが、その文字列 (ユーザーが入力したもの) を制御することはできません。

0 投票する
0 に答える
1317 参照

javascript - Java で ScriptEngine を使用すると、valid javascript eval(..) が失敗する

Web ページで正しく実行され、「アンパッカー」Web ページ ツール http://matthewfl.com/unPacker.htmlを使用して正しく実行される javascript eval(...) があるので、eval(.. .) ステートメントは正しいです。

その eval() を Java で実行する必要があるため、次を使用して JavaScript エンジンをロードして実行しました。

単純な評価は正しく機能しますが、Web ページで機能するより複雑な評価は失敗します

新しいnashornもjava8で使ってみた

しかし、それも失敗します

私の最後のテストは、java8 jjs nashorn インタープリターを使用することでしたが、これも失敗しました

以下は、失敗したコンソール出力を示しています。

Javaでこれらを評価する方法についての助けをいただければ幸いです。おそらく、eval の構文を変更する必要がありますか?

ここにeval()があります