はじめに
本資料では Java がインストールされていない環境で、Eclipse で開発した自作プログラムを .exe ファイルとして実行できるようにする方法を紹介しています。
参考資料
参考資料として紹介している記事を読んでいただくのが一番早いかと思います。もう少し丁寧に、ということでまとめ直させていただきました。
実施環境
- Windows 11 Pro
- Eclipse 2023-12
- e(fx)clipse 3.8.0
- Oracle OpenJDK 21
- JavaFX 21
- Launch4j 3.50
サンプルの Eclipse プロジェクト名は「HelloFXSample」です。これから、「HelloFXSample.exe」として実行できるようにしていきます。
作業方法
Eclipse プロジェクトのエクスポート
exe ファイル化したいプロジェクトを右クリックし、エクスポートを選択します。
「実行可能JARファイル」を選択し、次へ進みます。
必要な設定を行い、JARファイルを生成します。
項目 | 選択 |
---|---|
起動構成 | Main (ドロップダウンリストにある) |
エクスポート先 | JAR ファイルの保存先 |
ライブラリー処理 | 生成されるJARの隣のサブフォルダーに必須ライブラリーをコピー |
エクスポートすると、保存先に JAR ファイルと外部ライブラリ入りのフォルダが作成されます。
アプリ実行用の最小構成 JRE を作成する
Java の実行には JRE (Java Runtime Environment) が必要です。開発環境の JRE をそのままコピーしても動作しますが、配布用なので、なるべく最小限のサイズにしたいということで、最小構成の JRE を作成します。
jdeps によるモジュールの依存関係の確認
jdeps コマンドを使い、モジュールの依存関係を確認します。jdeps コマンドは JDK に含まれているため、パスが通っていれば利用できます。
> jdeps --module-path [JavaFX SDK の lib ディレクトリ] -s [JAR ファイル]
--module-path
オプションの [JavaFX SDK の lib ディレクトリ] には、インストールしているはずの JavaFX SDK の lib ディレクトリのパスを指定します。複数パスを指定する場合は ;
で区切れば良さそうです。
こちらの環境では、SDK を "C:\pleiades\javafx-sdk-21.0.2" に格納しているので、次のように指定しました。
> jdeps --module-path "C:\pleiades\javafx-sdk-21.0.2\lib" -s HelloFXSample.jar
HelloFXSample -> java.base
HelloFXSample -> javafx.base
HelloFXSample -> javafx.controls
HelloFXSample -> javafx.fxml
HelloFXSample -> javafx.graphics
最小構成 JRE 化するにあたって、jdeps コマンドで列挙された項目を、次で使う jlink コマンドの --add-modules
に指定します。
- java.base
- javafx.base
- javafx.controls
- javafx.fxml
- javafx.graphics (参考資料によると、不要とのこと)
jlink コマンドによる JRE の作成
jlink コマンドを使い、配布アプリケーション専用の JRE を作成します。
> jlink --module-path [JavaFX の jmods ディレクトリ] --add-modules java.base,javafx.base,javafx.controls,javafx.fxml --output jre-min
--module-path
オプションの [JavaFX の jmods ディレクトリ] には JavaFX SDK 配布サイトでダウンロードできる jmods ファイルのディレクトリを指定します。
--add-modules
オプションには jdeps コマンドで見つかった依存関係のライブラリをカンマ区切りで指定します。
> jlink --module-path "C:\pleiades\javafx-jmods-21.0.2" --add-modules java.base,javafx.base,javafx.controls,javafx.fxml --output jre-min
うまく行けば jre-min ディレクトリが生成されています。
JARファイルを動作確認する
PowerShell または cmd.exe で JAR ファイルを保存したディレクトリで作業します。
次のようなコマンドで、JAR ファイルからプログラムが実行できることを確認します。
> .\jre-min\bin\java.exe -jar [JAR ファイル]
> .\jre-min\bin\java.exe -jar HelloFXSample.jar
EXE ファイルに変換する
変換には Launch4j を使用します。次のサイトからダウンロードし、インストールしてください。
http://launch4j.sourceforge.net/
Basicタブでは次のような設定を行います。
設定項目 | 設定内容 |
---|---|
Output file | 出力する exe ファイル名を設定します。JRE から相対パスで指定できるよう jre-min フォルダの横に指定します。 |
Jar | 変換するJARファイルを指定します |
JREタブでは次のような設定を行います。
設定項目 | 設定内容 |
---|---|
JRE paths | exe ファイルを基準に jre-min ディレクトリを相対パスで指定します |
Min JRE version | 必須項目です。21.0.2 のように Java のバージョンを指定します |
最後に、画面上部の歯車マーク (Build Wrapper) で設定ファイルを保存し、実行します。実行時のログに "Successfully created" があれば成功しているはずです。
画面上部の再生マーク (Test Wrapper) で実行して動作を確認します。
作業ディレクトリにある、jre-min ディレクトリと exe ファイルを配布することで、どこでも実行できます。
こちらの環境では、lib ディレクトリや jar ファイルは必要ありませんでした。