この回について
前回は、EXE化(パッケージング)に向けた「5段構え」の工程についてお話ししました。
今回は、実際にバッチファイルを動かす前に絶対に避けては通れない、「環境構築」について解説します。
特に、通常の開発ではあまり使わない「JMODS」というものが、EXE化には不可欠になります。
1. 必要な「材料」を揃える
今回のシステムを動かすために、以下の4つを準備します。Java関係のバージョンは基本的に揃えましょう(その時の新しいバージョンで)。
- JDK 25:Java本体。
- JavaFX SDK 25.0.1:JavaFXのライブラリ(jarファイル群)。通常の開発で使用するもの。
- JavaFX JMODS 25.0.1:【最重要】jpackageがEXEの中にJavaFXを組み込むために使用するモジュール形式のファイル群。
- JInput:ジョイスティック操作に必要なライブラリ。
2. なぜ「JMODS」が必要なのか?
通常のプログラム実行なら、SDKの中にある「jarファイル」をクラスパスに通せば動きます。
しかし、jpackageを使って「JavaがインストールされていないPCでも動くEXE」を作るには、
Javaの機能を「モジュール」として切り出して同梱する必要があります。
この「同梱するための専用パーツ」がJMODS(Java Modules)です。
これを用意しておかないと、パッケージングの工程(ステップ4)で「モジュールが見つかりません」というエラーが出て、EXE化に失敗してしまいます。
JDK側は準備万端
jpackageを使ってEXEを作る際、
内部では「必要なモジュールだけをかき集めて、最小限のJava実行環境を再構築する」という作業が行われています。
実は、Java本体(JDK)の標準機能(java.baseやjava.loggingなど)については、
JDKをインストールした時点ですでにJMODS形式のファイルが同梱されています。
そのため、標準機能だけで作られたプログラムなら、特に追加の準備は不要です。
JavaFXは「外付け」だから必要
しかし、JavaFXは現在のJava(JDK 11以降)では標準から切り離され、「外部ライブラリ」という扱いになっています。
EXE化の工程で、標準機能と同じようにJavaFXを「モジュール」として組み込むためには、
JDKが持っている標準モジュール群と同じ形式(JMODS)のファイルが、JavaFX用にも別途必要になるのです。
つまり、「標準パーツ(JDK)は揃っているけれど、
オプションパーツ(JavaFX)も同じ規格の部品として用意してあげないと、
一つのパッケージにまとめられない」ということなのです。
3. フォルダ配置の推奨例
後ほど紹介するバッチファイルでは、以下のような配置を想定しています。 あらかじめこのように整理しておくと、設定がスムーズです。
C:\Java ├─jdk-25.0.1 ├─javafx-sdk-25.0.1 └─javafx-jmods-25.0.1 ← ここにJMODSを解凍!
4. JMODSの入手方法
JavaFXの総本山である「Gluon」のサイトなどからダウンロードできます。
https://gluonhq.com/products/javafx/
SDKをダウンロードした場所のすぐ近くに「JMODS」という選択肢があるはずです。
必ずSDKと同じバージョン、同じアーキテクチャ(x64など)を選んでください。
これで、EXEを作るための準備が整いました。
次はいよいよ、これらを一気に組み上げる「Exeで動くバッチファイル」の中身を見ていきましょう。
シリーズリンク
Javaコンパイルしたモジュールをexe化してみる(1)Javaがexe化するに至った経緯を振り返る。
Javaコンパイルしたモジュールをexe化してみる(2)EXE化への「5段構え」の工程
Javaをexe化してみる(3)環境構築とJMODSを追加する
Javaをexe化してみる(4)バッチファイルで自動化しパッケージングする