問題タブ [nashorn]

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 投票する
9 に答える
15523 参照

java - 安全な Nashorn JS 実行

Java8 Nashorn を使用して、ユーザー提供の JS コードを安全に実行するにはどうすればよいですか?

このスクリプトは、一部のサーブレット ベースのレポートの一部の計算を拡張します。アプリにはさまざまな (信頼されていない) ユーザーがいます。スクリプトは、Java オブジェクトと、定義されたメンバーによって返されたオブジェクトにのみアクセスできる必要があります。デフォルトでは、スクリプトは Class.forName() (提供されたオブジェクトの .getClass() を使用) を使用して任意のクラスをインスタンス化できます。私が明示的に指定していない Java クラスへのアクセスを禁止する方法はありますか?

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

javascript - Nashorn: パッケージの奇妙な返品

Java の Nashorn エンジンでは、コードを評価するときに、これを行うと

e は null になります。

しかし、私が見つけた1つのことは、これを行うと

e (および anothervar) は org.bukkit.event パッケージになります。

Nashorn にドット表記のパッケージにアクセスすると、ブラケット表記が使用されるようになるのはなぜですか?

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

java - Nashorn でスーパー クラス メンバーにアクセスする方法

JavaScript で具体的な Java クラス (javafx ライブラリの TableCell) を拡張し、スーパークラスのメソッドを呼び出そうとしています。Rhinoエンジンでこれを行うのに問題はありませんが、Nashornでは失敗しています. 私のコードは次のとおりです。

8 月に nashorn に追加された上記の「super$setText」構文に加えて、nashorn ガイドの「スーパークラスのメソッドへのアクセス」でJava.super説明されている呼び出しを試しました。

これらのスニペットは両方とも、対応するテーブル ビューにデータが取り込まれているときに失敗します。cell.super$setTextメソッドの内容全体を貼り付けたので、これは奇妙に思えます-クローズオーバー変数がnullになる'null' has no such function "super$setText"方法はありません。「未定義を呼び出すことはできません」をスローします。cellJava.super(cell).setText

cell.text = itemまた、文句を言わずに新しいJavaScriptフィールドを設定するように見える便利なプロパティ構文も試しましたが、テーブルビューにテキストを表示することは何もしません。

私のJDK8ビルドはかなり最近のものです

これが nashorn のバグなのか、それともソースに問題があるのか​​を判断するのに苦労しています。これは正しい構文ですか? setTextで定義されていないが、そのTableCellスーパークラスの1つであることが重要かどうかも疑問に思っています。nashorn は階層の 1 レベル上までしか移動できませんか?

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

java - 新しい Java 8 Javascript エンジン Nashorn を使用しようとしたため、Java 7 アプリケーション エラーが発生しました

Java 7 でパッケージ化された私の Java アプリケーションは、顧客のコンピューターで次のスタック トレースを示しました。Java 7を明確に実行しているにもかかわらず、Java 8の新しいJavascriptエンジンを使用しようとしているようです。何かアイデアはありますか?

彼が Java 8 をインストールしているかどうかはわかりませんが (尋ねてみました)、起動時に自動チェックとログを行うため、彼が実際に Java 7 を使用してアプリケーションを実行していることは知っています。を与える

18/02/2014 21.47.09:com.jthink.songkong.cmdline.SongKong:writeSystemInfo:INFO: SongKong 1.17.0 using Java 1.7.0_45 24.45-b08 32bit on Windows 7 6.1 x86 が正常に初期化されました

失敗するコードは次のとおりです。

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

java - 動的ランタイム コード用に動的に読み込まれた jar よりも nashorn スクリプト エンジンを使用することでパフォーマンスが向上しますか?

ScriptEntine私はつい最近、Nashorn が JDK8 に含まれていることを読んだことが原因で、Java で API を発見しました。

Nashorn を使用して Javascript 内で Java コードを実行できるため、外部 jar からクラスをロードする代わりに、スクリプト エンジンを使用して外部コードを Javascript としてロードする方が有益であるかどうか疑問に思っています。

両方のオプションの長所と短所は何ですか?

0 投票する
3 に答える
7564 参照

java - Avatar.js と Project Avatar

Java 8 と Nashorn のコンテキストでは、2 つのプロジェクトが定期的に言及されています。

Avatar.jsProject Avatar

これらのプロジェクトの関係は何ですか?

Avatar.js のドキュメントはほとんどありません。私が収集した限りでは、JVM 上でノード アプリケーションを実行する可能性があります。

Project Avatar は、Avatar.js 上に構築されているようです。ただし、スコープは、Java EE 7 の代替 Web フレームワークを提供することのようです。Project Avatar でノード プログラム (つまり、grunt など) を実行することも可能ですか?

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

java-8 - Java 8 Nashorn: コンソールがかなり使い物にならない

OSX 10.9.2 で Java 8 ビルド 1.8.0-b132 を使用しています。

Java 8 の新しい JavaScript ランタイムである Nashorn で遊んでいます。

私は使用していますLibrary/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/bin/jjsが、残念ながらjjs、カーソルの左/右が機能しないため、インタラクティブモードではかなり使用できません:

jjs
jjs> var x =^[[D

上記の出力 (^[[D) は、「カーソル左」を押した結果です。その動作を修正し、jjs コンソールでカーソルを左右に使用する方法はありますか?

0 投票する
7 に答える
22522 参照

rhino - Rhino から Nashorn への切り替え

さまざまな機能のスクリプト作成に Javascript を多用する Java 7 プロジェクトがあります。今まではRhinoをスクリプトエンジンとして使っていました。Java 8 に移行したいと考えています。これは、Rhino を Nashorn に置き換えることも意味します。

Nashorn は Rhino とどの程度互換性がありますか? 一時的な代替品として使用できますか? それとも、スクリプトの一部が機能しなくなり、新しいエンジンに移植する必要があると予想できますか? Nashorn でサポートされていない、よく使用される Rhino の機能はありますか?

0 投票する
4 に答える
10807 参照

java - Java と Nashorn を使用したスクリプト作成は初めてですが、チュートリアルはありますか?

これについて説明するための良いチュートリアルなどはありますか? JavaScript には既に慣れていますが、Java でスクリプトを作成したことはまだありません。ありがとう。基本的に、プロジェクトの一部を処理するために JavaScript/XML を使用したいと考えています。Java 8 が Nashorn を介して JavaScript サポートを導入したことは知っています。これがどのように機能するかを学びたいです。javax.script を使用する必要があることは知っていますが、そのパッケージがどのように機能するかはわかりませんし、Nashorn がどのように機能するかもわかりません。

0 投票する
3 に答える
7895 参照

java - Nashorn (JSR 223) とプリコンパイルによる Java スクリプティング

ユーザーが入力したスクリプトの小さなスニペットを実行するために、JSR 223 経由で Nashorn を使用しています。

functionsさまざまなユーザー スクリプトは、静的な中央ライブラリ (上記のコード スニペットの文字列に保持されている) で定義されている JavaScript 関数を呼び出します。

Java から呼び出すことができるを取得するたびにInvocable、大きなライブラリ コードを常に再コンパイルする必要があります。

以前にコンパイルしたコードを新しいコードに結合する方法はありますか?