ひとつ前の記事
Javaコンパイルしたモジュールをexe化してみる(1)Javaがexe化するに至った経緯を振り返る。
概要
簡単にいうと、以下の工程で行いました。
ステップ1:コンパイル
ステップ2:アーカイブの作成(Jar)
ステップ3:パッケージング(jpackage)
ステップ4:必要なプロパティ群/ライブラリのコピー
jpackageであらゆるものをパッケージングするというのが
本流のようなイメージもあるみたいですが、
外部的な要因部分は、4)でコピーすることで補う方法で今回は試行をしています。
結局のところは、なかなかうまくいかなくて、試行錯誤した結果なのですが(汗)、
ひとつの結果として、見ていただければと思っています。
ひとつずつ解説していきます。
ステップ1:コンパイル
まずはすべての基本、
javacによるコンパイルです。
ソースコード(.java)を、Java仮想マシンが理解できるクラスファイル(.class)へと変換します。
ステップ2:アーカイブの作成(Jar)
クラスファイルを、一つの「JARファイル」にまとめます。
ここで正しくマニフェストファイルを指定し、「どこがメインクラスか」を定義しておくことが、
後の工程で重要になってきます。
ステップ3:パッケージング(jpackage)
パッケージングしていきます。
jpackageの出番です。
ステップ2で作ったJARファイル と JavaFXのモジュール群を読み込ませて、
EXEを作成し、アプリケーションの雛形を生成します。
ただし、この段階ではまだ動きません。
ゲームに必要な画像/音楽データ/ストーリーファイルや、
コントローラーを動かすための特殊なライブラリ(DLL)は、まだこの中には含まれていません。
ステップ4:必要なプロパティ群/ライブラリのコピー
ステップ3で作成したEXEの他に必要なプロパティ群/ライブラリのコピーしました。
バッチファイルのxcopyを使って、必要なリソース追加していきます。
- ゲームで使用する画像(image)や音声(sound)データ
- 動作設定を記したプロパティファイル
- JINPUTを動作させるためのDLLファイル
もともとは、Jarファイルにプロパティファイルやテキストファイルを同梱するのを忘れていたのですが、
カスタマイズする可能性を含めて、外出しのままにしました。
足りない部分をステップ4で補っている。というのが実情です。
JINPUTについても当タイミングでライブラリごとコピーするようにしました。
(動かなかったから・・・後付けしたわけですが・・・汗)
なかなか動かずに、今回は生成後のフォルダ直下に直接置くという方法をとりました。
他に方法があるような気がしますが、
お伝えする内容が今回の解決方法だったと思ってください。
(いろいろと試してみてくださいね♪)
まとめ(通常と違うところ)
今回はJavaFXを取り込んだのと、
JINPUTのライブラリも取り込みながら動かす。
というところが、通常と違うところになるかと思います。
次回は、ひとつずつ、手順を追っていきたいと思います。
シリーズリンク
Javaコンパイルしたモジュールをexe化してみる(1)Javaがexe化するに至った経緯を振り返る。
Javaコンパイルしたモジュールをexe化してみる(2)EXE化への「四段構え」の工程