問題タブ [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.
java - Java から ScriptEngine を使用してカスタム スクリプト関数を呼び出す
Python、Groovy、および JavaScript で記述された異なるスクリプト ファイルに同じ名前の同じカスタム関数があります。ユーザーは、使用するスクリプトの 1 つを選択できます。これらのスクリプトから一般的な方法で関数を呼び出したいです。
このようにして、「CustomJs.js」または「Customgroovy.groovy」でリーダーファイルを変更して、ScriptEngineManager パラメーターを「javascript」または「groovy」に変更しても関数を呼び出すことができます。
invokeFunction
ただし、以下のように使用せずに関数を呼び出す方法はあるのでしょうか。
まず、スクリプトを評価し、結果をバインドしてから、このオブジェクトの関数を呼び出します。
このような方法がある場合、または他の提案がある場合、これは私にとって最も一般的な方法ですか?
java - JavaScript オブジェクトのフィールド値の取得
一部のアプリケーションのカスタマイズを許可するために rhino を使用しています。Java から呼び出される JavaScript 関数の例を次に示します。
その後、Java アプリケーションは、必要に応じて返されたオブジェクトの値を取得できます。
rhino が JVM の一部になったので、Rhino API の代わりにスクリプト API を使用したいと考えていますが、Java コードから JavaScript オブジェクトのフィールド値を取得する方法が見つかりません。
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 クラスが許可されています。そのため、なぜ期待どおりに機能しないのかわかりません。
助言がありますか?
前もって感謝します、
ランディ
java - Java ScriptEngine - インポートを無効にする
私はどこでも検索して何も見つからなかったので、Java の組み込み JavaScript エンジンを使用したいと思いますが、ユーザーは次のような Java クラスをインポートできません。
また
また
java - Java の JavaScript エンジンの未定義オブジェクト
Java7 で次のコードを実行する
エラーが発生します
JavaScript のように、未定義のオブジェクトを null/false に評価するオプションはありますか?
「x&y」の代わりに「this.x&this.y」のようなことを行うオプションがあることは知っていますが、その文字列 (ユーザーが入力したもの) を制御することはできません。
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()があります