5 イメージおよびランタイムの変更
パッケージ化ツールにより生成されたアプリケーション・イメージおよびJavaランタイムは、ほとんどのアプリケーションで適切に機能します。ただし、カスタム要件がある場合、それに合せてイメージおよびランタイムを変更し、その後、アプリケーションをパッケージ化する際に、変更したバージョンを使用できます。
トピック:
アプリケーション・イメージの変更
必要に応じて、パッケージ化ツールで作成されるアプリケーション・イメージを変更し、変更したイメージを配布用にパッケージ化できます。
イメージを変更する理由としては、ファイルの追加と削除、リソースの追加またはランタイムの変更が考えられます。イメージを変更する必要がある場合は、パッケージ化ツールを2回実行します。最初に実行するとき、--type app-image
オプションを使用してアプリケーション・イメージのみを作成します:
jpackage --type app-image --name HelloWorld --input helloworld \
--main-jar HelloWorld.jar
HelloWorld
というディレクトリが現在のディレクトリに作成され、アプリケーション・イメージが格納されます。インストール可能なバンドルが作成されていません。アプリケーション・イメージに必要な変更を加えたら、パッケージ化ツールを再度実行して、変更されたイメージでインストール可能なバンドルを作成します:
jpackage --type msi --app-image HelloWorld --name HelloWorld
ノート:
-
アプリケーション・イメージをパッケージ化する場合は、
--name
オプションが必要です。 -
--type app-image
では、--runtime-image
オプションは使用できません。別のランタイムを使用する場合は、変更するアプリケーション・イメージの作成時に渡します。
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