5 イメージおよびランタイムの変更
パッケージ化ツールにより生成されたアプリケーション・イメージおよびJavaランタイムは、ほとんどのアプリケーションで適切に機能します。ただし、カスタム要件がある場合、それに合せてイメージおよびランタイムを変更し、その後、アプリケーションをパッケージ化する際に、変更したバージョンを使用できます。
トピック:
アプリケーション・イメージの変更
必要に応じて、パッケージ化ツールで作成されるアプリケーション・イメージを変更し、変更したイメージを配布用にパッケージ化できます。
イメージを変更する理由としては、ファイルの追加と削除、リソースの追加またはランタイムの変更が考えられます。イメージを変更する必要がある場合は、次のようにパッケージ化ツールを2回実行します:
- 
                        
                        --type app-imageオプションを指定してアプリケーション・イメージのみを作成します。例:jpackage --type app-image --name HelloWorld --module-path myModApps \ --module modhw/modhw.HelloWorldModこの例では、 HelloWorldという名前のディレクトリが現在のディレクトリに作成されます。HelloWorldディレクトリには、メイン・クラスがmodhw/modhw.HelloWorldModモジュールにあるmyModAppsディレクトリ内のモジュラ・アプリケーションを含むアプリケーション・イメージが含まれます。インストール可能なバンドルが作成されていません。
- 
                        
                        アプリケーション・イメージに必要な変更を加えたら、パッケージ化ツールを再度実行して、変更されたイメージでインストール可能なバンドルを作成します例: jpackage --type msi --app-image HelloWorld --name HelloWorld
ノート:
- 
                           
                           アプリケーション・イメージをパッケージ化する場合は、 --nameオプションが必要です。
- 
                           
                           --app-imageでは、--runtime-imageオプションは使用できません。次のエラーが発生します:Error: Mutually exclusive options [--runtime-image] and [--app-image]別のランタイムを使用する場合は、最初に jpackageを実行してアプリケーション・イメージを作成するときに指定します。例:jpackage --type app-image --name HelloWorld \ --runtime-image myCustomJRE --module-path myModApps \ --module modhw/modhw.HelloWorldMod
Javaランタイムの変更
アプリケーションにパッケージ化されているJavaランタイムをさらに制御する場合は、カスタムのランタイムを作成できます。
アプリケーションのカスタムJavaランタイム・イメージを作成するには、アプリケーションをパッケージ化する前にjlinkを実行します。次に--runtime-imageオプションを使用して、作成されたイメージをパッケージ化ツールに渡します。カスタムのランタイム・イメージを使用する理由としては、次のようなものがあります:
                  
- ランタイムの作成に使用するオプションをより細かく制御します
- jpackageの実行に使用したバージョンと異なるバージョンのJavaでアプリケーションをパッケージ化します
- 複数のアプリケーションに同じランタイムを使用します。
たとえば、次のコマンドでは、JavaFX 13モジュールを含むJDK 14ランタイムを作成し、そのランタイムをアプリケーションとパッケージ化します:
jlink --output jdk-14+fx --module path javafx-jmods-13 \
   --add modules javafx.web,javafx.media,javafx.fxml,java.logging
jpackage --name myapp --input lib --main-jar myApp.jar \
   --runtime-image jdk-14+fx以前のバージョンのJavaランタイムを必要とするアプリケーションをパッケージ化している場合、--runtime-imageオプションを使用します。次のコマンドでは、JDK 11ランタイムが自分のアプリケーションとともにパッケージ化されます:
                  
jpackage --name myapp --input lib --main-jar myApp.jar \
   --runtime-image jdk-11.0.5以前のバージョンのJDKに基づいたカスタム・ランタイムがアプリケーションで必要な場合は、以前のバージョンを使用してjlinkを実行し、ランタイム・イメージを作成します。次に、現在のJDKを使用してjpackageを実行し、カスタム・ランタイムに渡します。次のコマンドは、JDK 11.0.5を使用してカスタム・ランタイムを作成し、JDK 14を使用してパッケージ化します:
                  
c:\Program Files\Java\jdk-11.0.5\bin\jlink output my-jdk11 \
   --add-modules java.desktop,java.datatransfer 
c:\Program Files\Java\jdk-14\bin\jpackage --name myapp --input lib \
   --main-jar myApp.jar --runtime-image my-jdk11