概要 |
Java プラットフォームモジュールシステム(JPMS)は、Java 9 で導入されました。 これにより、関連するパッケージのセットをモジュールと呼ばれる上位レベルのコンポーネントにグループ化することで コードを整理でき、モジュール間の依存関係を宣言するメカニズムが提供されます。 アプリケーションをモジュール化すると、次のようないくつかの利点があります。 - コードがモジュールに編成されているアプリケーションは、読みやすく、保守しやすく、拡張性が高くなります。 - モジュール間の依存関係は、コンパイル時とアプリケーションの起動時の両方でチェックされるモジュール記述子によって定義されます。 この依存関係の早期解決により、ランタイムの信頼性が向上し、「NoClassDefFoundError」例外がアプリケーション クラッシュの一般的な原因となっていた Java の長年の問題が解決されます。 - モジュール内のパッケージは、明示的にエクスポートされた場合にのみ、他のモジュールからアクセスできます。 強力なカプセル化と呼ばれるこの原則は、リフレクションが侵入できない安全なスペースをコードにデフォルトで提供します。 - 最後に、モジュールシステムを使用すると、アプリケーションで使用されるモジュールのみを含むカスタムランタイムイメージを作成できます。 ランタイム環境のサイズが縮小されたことにより、アプリケーションの起動時間とメモリーフットプリントが大幅に改善されました。
Wrapper ver. 3.5.55 以降、wrapper. 警告
Wrapper ver. 3.5.55 より前は、「wrapper. モジュール記述子の一部で「wrapper」が使用されており、Wrapper ver. 3.5.55 以降にアップグレードする場合は、 名前を「org.tanukisoftware.wrapper」に必ず変更してください。 Wrapper には、アプリケーションによるモジュールの使用方法を設定するのに役立ついくつかのプロパティが用意されています。
注意これらのプロパティは、Java 9 以降のバージョンで実行する場合にのみ使用されます。 以前のバージョンでは無視されます。 |
wrapper.java.module_path.<n> プロパティ群 |
||||||||
これらのプロパティは、アプリケーションのモジュールが見つかる場所をリスト化するために使用されます。 そのリストにはディレクトリ、またはオプションでファイル名部分にワイルドカードを含む jar ファイルへのパスを含めることができます。 Wrapper はこのリストを使用して、Java コマンドラインの「--module-path」オプションを構築します。 モジュールパスエントリ内でワイルドカード文字が使用されている場合、 一致するすべてのファイルは、JVM インスタンスの起動時に使用されるモジュールパスに追加されます。 有効なワイルドカード文字は、
注意
このプロパティリストの値に「wrapper.
Wrapper は、[wrapper.jarfile]プロパティを使用して、
モジュールが使用されているかどうかに応じて、コマンドラインの正しい場所に「wrapper. クラスパス: Java では、同じパッケージを含む 2 つの異なる jar ファイルがモジュールパスリスト内に共存することは許可されません。 これは、歴史的にパッケージの重複は常に許可されてきたクラスパスとは異なります。 これが、少なくともアプリケーションが Java 9 モジュールシステムに完全に移行できるまでは、クラスパスが有用であり続ける理由の 1 つです。
次の制限に注意してください。クラスパスにリストされ、モジュールパスのどの場所にも見つからない jar ファイルは、JVM によって
名前のないモジュールとして使用され、その性質上、他のモジュールからアクセスできなくなります。
モジュールが別のモジュールの requires ディレクティブで参照されることになっている場合、そのモジュールは[wrapper. 問題?
モジュールパスに関連する問題が発生した場合、最初に行うべきことは、Wrapper によって生成されている完全なモジュールパスを確認することです。
これを行うには、[wrapper. 注意スペースを含むモジュールパス: Wrapper は、スペースを含むモジュールパス要素を正しく処理します。 これは、最終的に生成されたモジュールパスを引用符で囲むことによって、 Wrapper によって後で行われます。 個々のモジュールパス要素のプロパティ値は、スペースが含まれている場合でも、引用符を含めて定義しないでください。 |
wrapper.java.module_path.missing.loglevel |
||||||||
デフォルトでは、Wrapper は、不足しているモジュールパス要素に関する警告を 「 [DEBUG] 」ログレベルで記録します。 すべてのデバッグ出力を有効にせずに、これらの生成されたログメッセージを確認したい場合は、非常に一般的です。 このプロパティを使用すると、警告が記録されるログレベルを指定できます。 有効なプロパティー値は次のとおり:
デフォルト値は[DEBUG]です。
アプリケーションで jar が頻繁に欠落する場合は、この値を「NONE」に設定すると、どのログレベルでも警告が無効になります。 ワイルドカードとして定義されたモジュールパス要素では、ワイルドカードが少なくとも 1 つのファイルと一致しない場合にも警告がログに記録されます。 これは、ディレクトリが存欠落している場合や空である場合に起こる可能性があります。 |
wrapper.java.upgrade_module_path.<n> |
||||||
これらのプロパティは、[wrapper.
[wrapper. Wrapper はこのリストを使用して、Java コマンドラインの「--upgrade-module-path」オプションを構築します。 注意
このプロパティ リストの値にファイルを含める必要はありません。
The wrapper.
Wrapper は、[wrapper.jarfile]プロパティを使用して、モジュールが使用されているかどうかに応じて、コマンド ラインの適切な場所に wrapper. |
wrapper.java.upgrade_module_path.missing.loglevel |
||||||||
デフォルトでは、Wrapper はアップグレードモジュールパス要素が不足している場合に [DEBUG] ログレベルで警告を記録します。 すべてのデバッグ出力を有効にせずに、生成されたログメッセージを表示したい場合がよくあります。 このプロパティを使用すると、警告が記録されるログレベルを指定できます。 有効なプロパティー値は次のとおり:
デフォルト値は[DEBUG]です。
アプリケーションで jar が頻繁に欠落する場合は、この値を「NONE」に設定すると、どのログレベルでも警告が無効になります。 ワイルドカードとして定義されているアップグレードモジュールパス要素では、ワイルドカードが少なくとも 1 つのファイルと一致しない場合にも警告がログに記録されます。 これは、ディレクトリが存欠落している場合や空である場合に起こる可能性があります。 |
wrapper.java.module.<n> |
||||||
これらのプロパティは、アプリケーションで使用されるルートモジュールの名前を一覧表示するために使用されます。 ルートモジュールは、他のモジュールによって必要とされないか、オプションの依存関係 (つまり、モジュール記述子で「requires static」で指定されている) であるため、アプリケーションの起動時にモジュールグラフにプルできないモジュールです。 Wrapper はこのリストを使用して、コマンドラインの「--add-modules」オプションを構築します。 モジュール名に加えて、リストには次のトークンを含めることができます。
詳しい説明についてはJDK 仕様を参照してください。 |