ClassLoader全体のJava8 ScriptEngine

igr

さまざまなクラスローダー内でJavaScriptコードを実行する必要があります。Javaの場合、各タスクは個別のクラスローダーで実行されます。今、私はこれをjavascriptにする必要があります。

ScriptEngine各クラスローダーでの新しいインスタンスを作成する必要がありますか、それともクラスローダー間で共有しても大丈夫ですか?

A.スンダララジャン

あなたの質問から、なぜそのようなクラスローダーの分離を探すのかは明らかではありません。だから、私はここでnashornのクラスローダーを要約しています-多分、あなたはあなたが探しているものを手に入れるでしょう。

Nashornとクラスローダー:

  1. Nashornクラス(jdk.nashorn。*)は、Java拡張クラスローダーによってロードされます
  2. 生成されたスクリプトクラス、アダプタ(サブクラス、スクリプトからのインターフェイス実装)は、nashornの内部クラスローダーによってロードされます。
  3. スクリプトから参照されるJavaクラスは、Nashornの「アプリクラスローダー」によってロードされます。

(1)と(2)はカスタマイズできません。nashornコードには、特権コードであるという前提があります。また、生成されたスクリプトクラスローダーとアダプターローダーについての仮定があります。

(3)は、デフォルトでは、nashornエンジンの作成時のスレッドコンテキストクラスローダーです。スレッドコンテキストクラスローダーがnullの場合、Nashorn独自のローダー(拡張ローダー)が使用されます。

したがって、Thread.setContextClassLoader APIを介して適切なスレッドコンテキストローダーを設定した後にNashornエンジンを作成すると、スクリプトエンジンの「アプリクラスローダー」を制御できます。

NashornScriptEngineFactory(nashorn固有のAPI https://docs.oracle.com/javase/8/docs/jdk/api/nashorn/jdk/nashorn/api/scripting/NashornScriptEngineFactory.html)を使用してスクリプトエンジンを作成しても問題がない場合、プログラムで任意のクラスローダーを「アプリクラスローダー」として渡すこともできます。ClassLoader引数を受け入れるNashornScriptEngineFactoryメソッドを確認することをお勧めします。

「アプリクラスローダー」に加えて、オプションで、「アプリクラスローダー」の前に検索される別の追加のクラスローダーを使用することもできます。これは、「-cp」または「-classpath」nashornコマンドラインオプションで指定されます。「nashorn.args」システムプロパティを介してスクリプトエンジンのnashornコマンドラインオプションを指定するか、NashornScriptEngineFactoryクラスのgetScriptEngineメソッドを使用してプログラムで渡すことができることに注意してください。参照:https//wiki.openjdk.java.net/display/Nashorn/Nashorn+jsr223+engine+notes

お役に立てれば。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Java ScriptEngine and parent window functions

分類Dev

Attempting to create V8ScriptEngine instance fails with IExpando error

分類Dev

「nashorn」という名前のScriptEngineがnull

分類Dev

Java ScriptEngineのセキュリティ問題

分類Dev

Java:ScriptEngine javascriptからオブジェクトを返す

分類Dev

Java ScriptEngineを介してJavaScriptでjarを使用する

分類Dev

Java ScriptEngineがサポートする言語

分類Dev

サーブレットでのNashorn ScriptEngineの再利用

分類Dev

Rhinoとjavax.script.ScriptEngineへの同時アクセス

分類Dev

ClearsSript V8ScriptEngine TypeError:form.Showは関数ではありません

分類Dev

ScriptEngineを使用してJavaScriptからJavaメソッドを呼び出す

分類Dev

ScriptEngineで複数のJavaScriptファイルを実行する方法は?

分類Dev

Pass object instance to Roslyn ScriptEngine

分類Dev

JS-ScriptEngine eval(String)からJavaコードを実行できるのはなぜですか?

分類Dev

「ウィンドウ」は、SeleniumのJavaでScriptEngineが定義されていません

分類Dev

NashornScriptEngineFactoryがClassFilterとargsのみでScriptEngineを取得する可能性がないのはなぜですか?

分類Dev

ScriptEngineによって評価されたJavaScriptコードのステップスルー

分類Dev

高度な数学「ルートを含む」文字列をコードに変換するJavaのScriptEngineライブラリで実行する

分類Dev

Java - 1.7 では javax.script.ScriptEngine を使用する場合と比較して、1.8 では Javascript 正規表現コードが失敗します。

分類Dev

スレッドごとに個別のScriptEngineおよびCompiledScriptインスタンスを使用する必要がありますか?

分類Dev

ScalaTestでScriptEngineを使用する方法

分類Dev

C#でScriptEngineを使用する方法

分類Dev

Java8の素数

分類Dev

Java8のMoreObjectsの代替

分類Dev

ScriptEngine JavaScriptはサポート対象外ですか?

分類Dev

ScriptEngineを介したPageDownがMarkdownを誤って解析する

分類Dev

ScriptEngineを介したPageDownがMarkdownを誤って解析する

分類Dev

ScriptEngineはクリアして破棄します

分類Dev

ScriptEngine JSONを表す文字列を渡す方法は?

Related 関連記事

  1. 1

    Java ScriptEngine and parent window functions

  2. 2

    Attempting to create V8ScriptEngine instance fails with IExpando error

  3. 3

    「nashorn」という名前のScriptEngineがnull

  4. 4

    Java ScriptEngineのセキュリティ問題

  5. 5

    Java:ScriptEngine javascriptからオブジェクトを返す

  6. 6

    Java ScriptEngineを介してJavaScriptでjarを使用する

  7. 7

    Java ScriptEngineがサポートする言語

  8. 8

    サーブレットでのNashorn ScriptEngineの再利用

  9. 9

    Rhinoとjavax.script.ScriptEngineへの同時アクセス

  10. 10

    ClearsSript V8ScriptEngine TypeError:form.Showは関数ではありません

  11. 11

    ScriptEngineを使用してJavaScriptからJavaメソッドを呼び出す

  12. 12

    ScriptEngineで複数のJavaScriptファイルを実行する方法は?

  13. 13

    Pass object instance to Roslyn ScriptEngine

  14. 14

    JS-ScriptEngine eval(String)からJavaコードを実行できるのはなぜですか?

  15. 15

    「ウィンドウ」は、SeleniumのJavaでScriptEngineが定義されていません

  16. 16

    NashornScriptEngineFactoryがClassFilterとargsのみでScriptEngineを取得する可能性がないのはなぜですか?

  17. 17

    ScriptEngineによって評価されたJavaScriptコードのステップスルー

  18. 18

    高度な数学「ルートを含む」文字列をコードに変換するJavaのScriptEngineライブラリで実行する

  19. 19

    Java - 1.7 では javax.script.ScriptEngine を使用する場合と比較して、1.8 では Javascript 正規表現コードが失敗します。

  20. 20

    スレッドごとに個別のScriptEngineおよびCompiledScriptインスタンスを使用する必要がありますか?

  21. 21

    ScalaTestでScriptEngineを使用する方法

  22. 22

    C#でScriptEngineを使用する方法

  23. 23

    Java8の素数

  24. 24

    Java8のMoreObjectsの代替

  25. 25

    ScriptEngine JavaScriptはサポート対象外ですか?

  26. 26

    ScriptEngineを介したPageDownがMarkdownを誤って解析する

  27. 27

    ScriptEngineを介したPageDownがMarkdownを誤って解析する

  28. 28

    ScriptEngineはクリアして破棄します

  29. 29

    ScriptEngine JSONを表す文字列を渡す方法は?

ホットタグ

アーカイブ