名前
jmod - JMODファイルの作成と、既存のJMODファイルの内容のリスト
シノプシス
jmod
(create
|extract
|list
|describe
|hash
) [options] jmod-file
次の情報が含まれます。
主要な操作モード
create
- 新しいJMODアーカイブ・ファイルを作成します。
extract
- JMODアーカイブ・ファイルからすべてのファイルを抽出します。
list
- すべてのエントリの名前を出力します。
describe
- モジュールの詳細を出力します。
hash
- リーフ・モジュールを特定し、直接または間接的にそれらを必要とする依存性のハッシュを記録します。
オプション
- options
- 「jmodのオプション」を参照してください。
必須
- jmod-file
- 作成するまたは情報の取得元となるJMODファイルの名前を指定します。
説明
ノート:モジュール・パスへのモジュールのデプロイやMavenリポジトリへのモジュールの公開など、ほとんどの開発タスクでは、引き続きモジュール化JARファイル内のモジュールをパッケージ化します。 jmod
ツールは、ネイティブ・ライブラリまたはその他の構成ファイルを持つモジュール、またはjlinkツールを使用してランタイム・イメージにリンクするモジュールを対象としています。
JMODファイル形式では、.class
ファイル、メタデータおよびリソース以外のファイルを集計できます。 この形式は転送可能ですが、実行可能ではありません。つまり、コンパイル時やリンク時に使用することはできますが、実行時には使用できません。
多くのjmod
オプションには、コンテンツが結果のJMODファイルにコピーされるパスの指定が含まれます。 これらのオプションは、指定されたパスのすべての内容(サブディレクトリとその内容を含む)をコピーしますが、--exclude
オプションで指定されたパターンに一致する名前を持つファイルは除外します。
--hash-modules
オプションまたはjmod hash
コマンドを使用すると、各モジュールの記述子で、依存が許可されているモジュールのコンテンツのハッシュを記録できるため、これらのモジュールを"tying"にまとめることができます。 これにより、パッケージを1つ以上の特定の名前が付けられたモジュールにエクスポートしたり、修飾されたエクスポートによってそれ以外にはエクスポートしないようにできます。 ランタイムでは、記録されたモジュールのハッシュが実行時に解決されたものと一致するかどうかを検証し、一致しない場合はエラーを返します。
jmodのオプション
--class-path
path- アプリケーションJARファイルまたは結果のJMODファイルにコピーするクラスが格納されているディレクトリの場所を指定します。
--cmds
path- 結果のJMODファイルにコピーするネイティブ・コマンドの場所を指定します。
--compress
compress-
JMODファイルの作成に使用する圧縮を指定します。 指定できる値は
zip-[0-9]
で、zip-0
は圧縮せず、zip-9
は最適な圧縮を提供します。 デフォルトはzip-6
です。 --config
path- 結果のJMODファイルにコピーするユーザーが編集可能な構成ファイルの場所を指定します。
--date
TIMESTAMP- エントリのタイムスタンプに使用する、オプションのタイムゾーン形式のISO-8601拡張オフセット日時。例、"2022-02-12T12:30:00-05:00"。
--dir
path-
jmod
が指定したJMODアーカイブから抽出したファイルを配置するロケーションを指定します。 --dry-run
- ハッシュ・モードの試験的な実行を実行します。 ハッシュ値を記録せずに、リーフ・モジュールとそれに必要なモジュールを特定します。
--exclude
pattern-list-
指定されたカンマ区切りのパターン・リスト(各要素は次のいずれかの形式)と一致するファイルを除外します。
glob-pattern
glob:
glob-patternregex:
regex-pattern
glob-patternの構文については、
FileSystem.getPathMatcher
メソッドを参照してください。 正規表現を表すregex-patternの構文については、Pattern
クラスを参照してください。 --hash-modules
regex-pattern-
指定されたregex-patternに一致するモジュールのモジュール・グラフに基づいて、リーフ・モジュールを特定し、依存性のハッシュを直接的および間接的に必要とするハッシュを記録します。 ハッシュは、作成されるJMODアーカイブ・ファイル、または
jmod hash
コマンドで指定されたモジュール・パスのJMODアーカイブまたはモジュラJARに記録されます。 --header-files
path- 結果のJMODファイルにコピーするヘッダー・ファイルの場所を指定します。
--help
または-h
- 使用方法が表示されます。
--help-extra
- 追加オプションのヘルプを出力します。
--legal-notices
path- 結果のJMODファイルにコピーする法律上の注意点の場所を指定します。
--libs
path- 結果のJMODファイルにコピーするネイティブ・ライブラリの場所を指定します。
--main-class
class-name- module-info.classファイルに記録するメイン・クラスを指定します。
--man-pages
path- 結果のJMODファイルにコピーするmanページの場所を指定します。
--module-version
module-version- module-info.classファイルに記録するモジュール・バージョンを指定します。
--module-path
pathまたは-p
path-
モジュール・パスを指定します。
--hash-modules
も指定する場合は、このオプションが必要です。 --target-platform
platform- ターゲット・プラットフォームを指定します。
--version
-
jmod
ツールのバージョン情報を出力します。 @
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 "macOS" --os-version "10.10.5" greetingsmod
jmodの追加オプション
jmodのオプションで説明されているオプションに加えて、次の追加オプションをコマンドとともに使用できます。
--do-not-resolve-by-default
- モジュールのデフォルトのルート・セットから除外します。
--warn-if-resolved
- モジュールが解決される場合に警告を発行するツールのヒント。 非推奨、削除予定の非推奨または実験的のいずれかです。
jmod createの例
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 "macOS"
--os-version "10.10.5" greetingsmod
エントリの日付を2022 March 15 00:00:00
として指定するJMODファイルを作成します :
jmod create --class-path build/foo/classes --date 2022-03-15T00:00:00Z
jmods/foo1.jmod
jmod hashの例
次の例では、リーフ・モジュール(この例では、ma
です)を必要なモジュール(mb
)とリンクしようとしたときに、必要なモジュールに記録されたハッシュ値がリーフ・モジュールのハッシュ値と一致しない場合にどうなるかを示します。
次の
.java
ファイルを作成してコンパイルします:jmodhashex/src/ma/module-info.java
module ma { requires mb; }
jmodhashex/src/mb/module-info.java
module mb { }
jmodhashex2/src/ma/module-info.java
module ma { requires mb; }
jmodhashex2/src/mb/module-info.java
module mb { }
モジュールごとにJMODアーカイブを1つ作成します。 ディレクトリ
jmodhashex/jmods
およびjmodhashex2/jmods
を作成した後、次のコマンドをjmodhashex
ディレクトリから、次にjmodhashex2
ディレクトリから実行します。jmod create --class-path mods/ma jmods/ma.jmod
jmod 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
オプションなし)が、モジュールmb
にリーフ・モジュールma
のハッシュ値を記録することを示します。jmodhashex
ディレクトリに格納されているJMODアーカイブ・ファイルにハッシュ値を記録します。 次のコマンドをjmodhashex
ディレクトリから実行します。jmod hash --module-path jmods --hash-modules .*
このコマンドにより、次のように出力されます。
Hashes are recorded in module mb
jmodhashex
ディレクトリに格納されている各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
ディレクトリ
jmodhashex2
のモジュールma
を含むランタイム・イメージを作成し、ディレクトリjmodhashex
のモジュールmb
を作成してみます。jmodhashex2
ディレクトリから次のコマンドを実行します。LinuxおよびmacOS:
jlink --module-path $JAVA_HOME/jmods:jmods/ma.jmod:../jmodhashex/jmods/mb.jmod --add-modules ma --output ma-app
Windows:
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