名前
jmod - JMODファイルの作成と、既存のJMODファイルの内容のリスト
シノプシス
jmod (create|extract|list|describe|hash) [options] jmod-file
次の情報が含まれます。
主要な操作モード
create- 新しいJMODアーカイブ・ファイルを作成します。
extract- JMODアーカイブ・ファイルからすべてのファイルを抽出します。
list- すべてのエントリの名前を表示します。
describe- モジュールの詳細を出力します。
hash- リーフ・モジュールを特定し、直接または間接的にそれらを必要とする依存性のハッシュを記録します。
Options
- options
- 「jmodのオプション」を参照してください。
必須
- jmod-file
- 作成するまたは情報の取得元となるJMODファイルの名前を指定します。
説明
ノート:モジュール・パスへのモジュールのデプロイやMavenリポジトリへのモジュールの公開など、ほとんどの開発タスクでは、引き続きモジュール化JARファイル内のモジュールをパッケージ化します。 jmodツールは、ネイティブ・ライブラリまたは他の構成ファイルを持つモジュールまたはjlinkツールを使用してランタイム・イメージにリンクするモジュールを対象としています。
JMODファイル形式を使用すると、.classファイル以外のファイル、メタデータおよびリソースを集約できます。 この形式は転送可能ですが実行可能ではありません。つまり、実行時ではなくコンパイル時またはリンク時に使用できます。
jmodオプションの多くは、内容が結果のJMODファイルにコピーされるパスの指定を含みます。 このようなオプションでは、サブディレクトリとその内容を含め、指定されたパスの内容をすべてコピーしますが、名前が--excludeオプションで指定されたパターンと一致するファイルは除外します。
--hash-modulesオプションまたはjmod hashコマンドを使用すると、各モジュールのディスクリプタに、そのモジュールに依存できるモジュールの内容のハッシュを記録でき、このようにしてこれらのモジュールを"結び付ける"ことができます。 これにより、パッケージを1つ以上の特定の名前が付けられたモジュールにエクスポートしたり、修飾されたエクスポートによってそれ以外にはエクスポートしないようにできます。 ランタイムは、モジュールの記録されたハッシュが実行時に解決されたハッシュと一致するかどうかを検証します。そうでない場合、ランタイムはエラーを返します。
jmodのオプション
--class-pathpath- アプリケーションJARファイルまたは結果のJMODファイルにコピーするクラスが格納されているディレクトリの場所を指定します。
--cmdspath- 結果のJMODファイルにコピーするネイティブ・コマンドの場所を指定します。
--configpath- 結果のJMODファイルにコピーするユーザーが編集可能な構成ファイルの場所を指定します。
--dirpathjmodで指定のJMODアーカイブから抽出されたファイルを置く場所を指定します。--dry-run- ハッシュ・モードを実行します。 リーフ・モジュールと必要なモジュールを識別し、ハッシュ値をレコーディングしません。
--excludepattern-list指定されたコンマ区切りパターン・リストに一致するファイルを除外します。各要素は次のいずれかの形式を使用します:
glob-pattern
glob:glob-patternregex:regex-pattern
glob-patternの構文は、
FileSystem.getPathMatcherメソッドを参照してください。 正規表現を表すregex-patternの構文は、Patternクラスを参照してください。--hash-modulesregex-pattern- 指定されたregex-patternと一致するモジュールのモジュール・グラフに基づいて、リーフ・モジュールを特定し、直接または間接的にそれらを必要とする依存性のハッシュを記録します。 ハッシュは、作成されるJMODアーカイブ・ファイルに、あるいは
jmod hashコマンドで指定されたモジュール・パス上のJMODアーカイブまたはモジュラJARに記録されます。 --header-filespath- 結果のJMODファイルにコピーするヘッダー・ファイルの場所を指定します。
--helpまたは-h- 使用方法が表示されます。
--help-extra- 追加オプションのヘルプを出力します。
--legal-noticespath- 結果のJMODファイルにコピーする法律上の注意点の場所を指定します。
--libspath- 結果のJMODファイルにコピーするネイティブ・ライブラリのロケーションを指定します。
--main-classclass-name- module-info.classファイルに記録するメイン・クラスを指定します。
--man-pagespath- 結果のJMODファイルにコピーするmanページの場所を指定します。
--module-versionmodule-version- module-info.classファイルに記録するモジュール・バージョンを指定します。
--module-pathpathまたは-ppath- モジュール・パスを指定します。 このオプションは、
--hash-modulesも指定する場合に必要です。 --target-platformplatform- ターゲット・プラットフォームを指定します。
--versionjmodツールのバージョン情報を出力します。@filename指定したファイルからオプションを読み込みます。
オプション・ファイルとは、オプションと、通常コマンド・プロンプトに入力する値が含まれるテキスト・ファイルです。 オプションは、1行または複数行に表示されます。 パス名には環境変数を指定しないでください。 行の先頭にハッシュ記号(
#)を付けると、その行をコメント・アウトできます。jmodコマンドのオプション・ファイルの例を次に示します。#Wed Dec 07 00:40:19 EST 2016 create --class-path mods/com.greetings --module-path mlib --cmds commands --config configfiles --header-files src/h --libs lib --main-class com.greetings.Main --man-pages man --module-version 1.0 --os-arch "x86_x64" --os-name "Mac OS X" --os-version "10.10.5" greetingsmod
jmodの追加オプション
jmodのオプションで説明されているオプションに加えて、次の追加オプションをコマンドとともに使用できます。
--do-not-resolve-by-default- モジュールのデフォルトのルート・セットから除外します。
--warn-if-resolved- モジュールが解決される場合に警告を発行するツールのヒント。 非推奨、削除予定の非推奨または実験的のいずれかです。
jmodの作成例
次に、JMODファイルを作成する例を示します:
jmod create --class-path mods/com.greetings --cmds commands
--config configfiles --header-files src/h --libs lib
--main-class com.greetings.Main --man-pages man --module-version 1.0
--os-arch "x86_x64" --os-name "Mac OS X"
--os-version "10.10.5" greetingsmod
jmodハッシュの例
次の例では、リーフ・モジュール(この例では、ma)を必要なモジュール(mb)とリンクしようとし、必要なモジュールに記録されたハッシュ値がリーフ・モジュールのハッシュ値と一致しないときの動作を示します。
次の
.javaファイルを作成してコンパイルします。jmodhashex/src/ma/module-info.javamodule ma { requires mb; }jmodhashex/src/mb/module-info.javamodule mb { }jmodhashex2/src/ma/module-info.javamodule ma { requires mb; }jmodhashex2/src/mb/module-info.javamodule mb { }
モジュールごとにJMODアーカイブを作成します。 ディレクトリ
jmodhashex/jmodsおよびjmodhashex2/jmodsを作成した後、次のコマンドをjmodhashexディレクトリから、次にjmodhashex2ディレクトリから実行します。jmod create --class-path mods/ma jmods/ma.jmodjmod create --class-path mods/mb jmods/mb.jmod
必要に応じて、
jmod hashコマンドをプレビューします。jmodhashexディレクトリから次のコマンドを実行します:jmod hash --dry-run -module-path jmods --hash-modules .*このコマンドは、以下を出力します:
Dry run: mb hashes ma SHA-256 07667d5032004b37b42ec2bb81b46df380cf29e66962a16481ace2e71e74073aこれは、
jmod hashコマンド(--dry-runオプションの指定なし)がリーフ・モジュールmaのハッシュ値をモジュールmbに記録することを示しています。jmodhashexディレクトリに格納されているJMODアーカイブ・ファイルにハッシュ値を記録します。jmodhashexディレクトリから次のコマンドを実行します:jmod hash --module-path jmods --hash-modules .*このコマンドは、以下を出力します:
Hashes are recorded in module mbjmodhashexディレクトリに格納されている各JMODアーカイブに関する情報を出力します。 強調表示されたコマンドをjmodhashexディレクトリから実行します:jmod describe jmods/ma.jmod ma requires mandated java.base requires mb jmod describe jmods/mb.jmod mb requires mandated java.base hashes ma SHA-256 07667d5032004b37b42ec2bb81b46df380cf29e66962a16481ace2e71e74073aディレクトリ
jmodhashexのモジュールmbを除いて、ディレクトリjmodhashex2のモジュールmaが含まれるランタイム・イメージの作成を試みます。jmodhashex2ディレクトリから次のコマンドを実行します:Oracle Solaris、LinuxおよびOS X:
jlink --module-path $JAVA_HOME/jmods:jmods/ma.jmod:../jmodhashex/jmods/mb.jmod --add-modules ma --output ma-appWindows:
jlink --module-path %JAVA_HOME%/jmods;jmods/ma.jmod;../jmodhashex/jmods/mb.jmod --add-modules ma --output ma-app
このコマンドは、次のようなエラー・メッセージを表示します:
Error: Hash of ma (a2d77889b0cb067df02a3abc39b01ac1151966157a68dc4241562c60499150d2) differs to expected hash (07667d5032004b37b42ec2bb81b46df380cf29e66962a16481ace2e71e74073a) recorded in mb