問題タブ [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 に答える
319 参照

java - javascriptファイルをjava.awt.Canvasにリンクするには?

java.awt.Canvas のオブジェクトと JavaScript ファイル canvas.js があります。

canvas.js には以下が含まれます。

次に、canvas.js が ScriptEngine に読み込まれます。

次に、canvas.js で java.awt.Canvas オブジェクトを描画します。はいの場合、そうでない場合、代替手段は何ですか?

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

java - Java ScriptEngine (nashorn & rhino): スコープ/バインディングをスタックする方法は?

Rhino1.7R4とそのorg.mozilla.javascriptパッケージを使用してソフトウェアを移植し、 javax.scriptパッケージとその ScriptEngine ( Java 6 & 7 のRhino 、Java 8 のNashorn ) を使用する必要があります。

主な問題は、スコープ (バインディング) をスタックすることです。Rhino jar を使用して、次のことを行います。

そう

  • 変数が var なしで定義されている場合、それはグローバル変数 (ルート スコープ) です。
  • 変数が var で定義されている場合、それはローカル変数です (現在のスコープ)
  • 変数がアクセスまたは変更された場合、その現在のスコープ、親、祖父母、およびグローバル スコープでのエンジン ルックアップ

これは JS 標準の動作です。

javax.script API を使用してsetParentScopeと同じことを行うにはどうすればよいですか?

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

java - ScriptEngine 経由で静的メソッドのみのクラスにアクセスするにはどうすればよいですか?

Fooという名前の静的メソッド (注目) が 1 つしかないクラスがありbar()ます。bar()ランタイム スクリプト (この場合は Javascript) を介してアクセスする必要があります。

上記は機能しますが、私には少し奇妙に思えます。具体的には、新しい Foo を作成したくありません。Foopublic であるため、新しいオブジェクトをインスタンス化せずに、スクリプト ファクトリにそれを知らせる方法が必要です。試してみfactory.put("foo", Foo.class);ましたが、うまくいきませんでした。また、Javascriptコードでパッケージを指定しようとしました。

しかし、それもうまくいきませんでした。

Q:クラスのインスタンスをエンジンにバインドせずに、埋め込みスクリプトからクラスの静的メソッドにアクセスする方法はありますか?

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

java - JavaScript 等値演算子を Java 関数にバインドする

Java で JavaScript エンジンを使用して、いくつかの文字列を評価しています。user.group == group1JavaScript で Java メソッドを評価したいuser.hasGroup(group1)。ユーザーには、グループ文字列のリストが含まれています。

関数を次のようにバインドできることはわかっていますが、等価演算子を置き換えて右側をパラメーターとして使用する方法がわかりません。(jsEngine は私の JavaScript エンジンです)

0 投票する
2 に答える
1044 参照

java - Javaで文字列の数式を評価する方法

Javaでスティング数式を評価したい。この文字列には、ベクトルまたは単純な数値に適用される関数 (avg、max、min、...) が含まれている必要があります。私はすでに ScriptEngineManager を javasript エンジンで使用していますが、数値のみを使用しています。symja lib も表示されますが、複雑すぎて文書化されていません。実行する方法?ありがとう