プライマリ・コンテンツに移動
Java Platform, Standard Editionツール・リファレンス
リリース9
E91918-01
目次へ移動
目次

前
次

jmod

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コマンドを使用すると、各モジュールのディスクリプタに、そのモジュールに依存できるモジュールの内容のハッシュを記録でき、このようにしてこれらのモジュールを"結び付ける"ことができます。これにより、パッケージを1つ以上の特定の名前が付けられたモジュールにエクスポートしたり、修飾されたエクスポートによってそれ以外にはエクスポートしないようにできます。ランタイムでは、記録されたモジュールのハッシュが実行時に解決されたものと一致するかどうかを検証し、一致しない場合はエラーを返します。

jmodのオプション

--class-path path

アプリケーションJARファイルまたは結果のJMODファイルにコピーするクラスが格納されているディレクトリの場所を指定します。

--cmds path

結果のJMODファイルにコピーするネイティブ・コマンドの場所を指定します。

--config path

結果のJMODファイルにコピーするユーザーが編集可能な構成ファイルの場所を指定します。

–-dir path

jmodで指定のJMODアーカイブから抽出されたファイルを置く場所を指定します。

--dry-run

ハッシュ・モードの試験的な実行を実行します。ハッシュ値を記録せずに、リーフ・モジュールとそれに必要なモジュールを特定します。

--exclude pattern–list

指定されたカンマ区切りのパターン・リスト(各要素は次のいずれかの形式)と一致するファイルを除外します。

  • glob-pattern

  • glob:glob-pattern

  • regex: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 "Mac OS X"
  --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 "Mac OS X"
  --os-version "10.10.5" greetingsmod 

jmod hashの例

次の例では、リーフ・モジュール(この例では、ma)を必要なモジュール(mb)とリンクしようとし、必要なモジュールに記録されたハッシュ値がリーフ・モジュールのハッシュ値と一致しないときの動作を示します。

  1. 次の.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 {
      }
  2. モジュールごとに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

  3. 必要に応じて、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に記録することを示しています。

  4. jmodhashexディレクトリに格納されているJMODアーカイブ・ファイルにハッシュ値を記録します。次のコマンドをjmodhashexディレクトリから実行します。

    jmod hash --module-path jmods --hash-modules .*

    このコマンドにより、次のように出力されます。

    Hashes are recorded in module mb
  5. 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
    
  6. ディレクトリ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-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