Javaをexe化してみる(2)- jpackageの活用 と 自動化バッチの紹介 -

前回の「(1)」では概要をお伝えしましたが、
今回は実際に配布可能なExeファイルを作るための「自動化バッチ」の中身を詳しく解説します。

1. なぜ「jpackage」なのか?

Java 14から導入された jpackage は、**「実行環境(JRE)を同梱できる」**点にあります。

以前のようにユーザーに「Javaをインストールしてください」とお願いする必要がなく、
配布したフォルダ内のexeを叩くだけで動く、現代的な配布形態が可能です。

ただ、ファイルサイズがけっこう大きくなります。

2. ビルドを行うバッチファイル(makeExe.bat)

私が今回のシミュレーターで使用したバッチファイルを紹介します。


@echo off
setlocal
echo === Java EXE Build System (JDK 25) ===

REM (1)事前準備
REM 環境変数で一括管理
REM 自分自身の環境に合わせて修正してください
echo [1-1] 環境変数設定...
set JAVA_HOME=C:\Java\jdk-25.0.1
set APP_NAME=SolarSystemSim
set MAIN_CLASS=SolarSystemSim
set VERSION=1.0.0

REM 必要なフォルダを作成
echo [1-2] フォルダ作成...
if not exist "out" mkdir "out"
if not exist "dist" mkdir "dist"
if not exist "release" mkdir "release"

REM (2)コンパイル
echo [2] コンパイル中...
"%JAVA_HOME%\bin\javac" ^
  -d out *.java

REM (3)「dist」フォルダへjarファイルを集約
echo [3] distフォルダ構築 jarファイル作成中。
echo Main-Class: %MAIN_CLASS% > manifest.txt
"%JAVA_HOME%\bin\jar" cvfm dist\%APP_NAME%.jar manifest.txt -C out .

REM (4)パッケージング。EXE化
echo [4] パッケージ作成中 (app-image)...
"%JAVA_HOME%\bin\jpackage" ^
  --name "%APP_NAME%" ^
  --type app-image ^
  --win-console ^
  --input dist ^
  --dest "release" ^
  --main-jar "%APP_NAME%.jar" ^
  --main-class "%MAIN_CLASS%" ^
  --vendor "KIN"

echo === 全工程完了! release\%APP_NAME% 内の %APP_NAME%.exe を実行してください ===
pause

3. ポイント解説

jar化は必須

jpackageはJARファイルを入力として受け取るため、この工程は必須です。
この際、マニフェストファイルを使用して、アプリの起動地点(Main-Class)を明示するのがポイントです。

–type app-image

インストーラーではなく、実行に必要なファイル群を一つのフォルダにまとめます。ポータブルに持ち運びたい場合に最適です。
インストーラにしたい場合は、
–type exe
–type msi
にしてください。
わたしはインストールするまではちょっと・・・って感じでフォルダにまとめるところまでにしています。

–win-console の役割

これを入れると、アプリ(exe)を起動した瞬間に、背後で「コマンドプロンプト(黒い画面)」が一緒に立ち上がるようになります。

入れるメリット(デバッグ用):

プログラムの中で System.out.println(“天体の計算開始…”); のように書いているメッセージが、その黒い画面にリアルタイムで表示されます。
もしエラーで落ちた時も、そこにエラーメッセージ(スタックトレース)が残るので、「なぜ動かないのか」を突き止めるのに必須です。

入れないメリット(製品用):

純粋にシミュレーターの画面だけがポーンと立ち上がります。
一般ユーザーからすると「余計な黒い画面が出ない」ので、見た目がスッキリして「完成品」っぽく見えます。
デバッグが済んだら、取っちゃう方がスマートでしょうね~。

今回の記事まとめ

Javaで太陽系天体シミュレーター&JavaをExe化してみました。(Java21以降対応)
Javaをexe化してみる(2)- jpackageの活用 と 自動化バッチの紹介 -
Javaのバーチャルスレッドを利用してみた(3)感想とゲーム利用の有効性について考察

Youtubeに載せました♪
https://youtu.be/NPsgNbhEtds

シェアしていただけるとうれしいです。

共通編の見直しも実施しました(Java25&JavaFX25対応)Javaでゲームを作ろう

https://kinchannn.jp/javagame_common/

お正月休みの終わりが近くなってきた・・・汗。
もう休もう・・・(笑)

Java25&JavaFX25の対応が終わりました。
(他にはないことを祈る・・・汗)
各ゲームをJavaの最新LTSバージョンで動かしてみるのと、
共通編の修正と、大変でした。

今にして思えば、共通編は外出しにしておいて(本編からは切り離しておいて)
よかったと思っています。
全部の本を修正すると思ったら、発狂しそうです・・・汗汗汗。

とりあえずは、やった感があるので、よかったー。
もう少し早めにできるとよかったけど、なかなかねー。。。

Java25対応版ソースはこちら♪

Javaでゲームを作ろう

https://kinchannn.jp/javagame/

The Java 使いこなす

https://kinchannn.jp/thejava/

動作確認に、いろいろとゲームを少しだけやりました~。
本人が苦笑してしまう出来だなー。今思い出しても。

Javaでゲームを作ろう3- JavaFXシューティングゲーム編 -ダイジェスト版
https://youtu.be/pTQt_pPXgqc

Aki2氏とのすったもんだもいろいろと思い出せて面白いものです(笑)。

シェアしていただけるとうれしいです。

Java25&JavaFX25対応をおこないました。全てのモジュール、対応完了!

おはようございます。きんです。

Java25&JavaFX25対応をおこないました。

現在の最新バージョン、LTSである25.0.1にて動作確認を行いました。
Java、JavaFX、ともに同じバージョンになります。

一部、sta.batとj.batの入れ替えを行っています。
ソースもわずかですが、修正を行いました。
(一部、コンパイルエラーになった部分のみ対応)
HPに置いてあるzipファイルについては、更新を行っています。

ココナラでの活動もあり、最新化しておく必要性もあったので、対応した。
というのが、正直なところでありますが、
現状のままだと、動かないところもあったので、最新化できてよかったと思っています。

ちなみにまだココナラでの活動(サポート)はまだとなりますが、
よければご利用くださいね~♪

↓↓↓ココナラのわたしの出品ページ↓↓↓
https://coconala.com/services/3999646?ref=top_histories&ref_kind=home&ref_no=1

新しい年がはじまって二日目。
今年もがんばるよー。がんばりましょう♪

本業の方は、また来年度から忙しくなるかも?
さてー、どうなるかなー・・・(--。。。

わたしのサイトもよろしく!
https://kinchannn.jp

The Java 使いこなす についても、約半日遅れで修正が完了しています。
(2026/01/02 19:39)

シェアしていただけるとうれしいです。

ココナラためしてみます!もしよければ、ご利用お願いいたします(_ _* 待ってまーす!

おはようございます。きんです。

昨日、ココナラに登録してみました!

もし、『時間をとって教えてほしい!』とかありましたら、リクエストください。
料金は別途発生することになってしまいますが、その分、お時間を予約というかたちで確保することができ、
聞きたいこと、困っていること、他にもいろいろお話ができることと思います。

(補足)
書籍をご購入いただいた方は、本の後ろの方に、問い合わせ先を載せています。
もちろん、そちらでお問い合わせいただいてもOKです!
返信に時間がかかるかもしれませんが、無料ですよん♪(^^)

直近はまだ本業があったりで、スケジュールをあまり開けていませんが、
(予約受付枠という時間を設定して開けていきます。わたしの場合は。ですが)
ココナラができる時間は、適宜設定していきたいと思っています。

プロフィール
https://coconala.com/users/5800154

出品サービス
https://coconala.com/services/3999646

ビデオチャット形式にしています。
zoomでやるらしいのですが、まだ、著者、やったことがなくて、
(仕事(本業)はもっぱらTeamsですね~)
手間取るかもしれなくて、
ココナラもはじめてですし、ちょっとおためし価格にしているところもあるかも?

年末年始の予定が見えてきたら、予約時間枠を設定していくので、
よければつかって~みてください♪

#Java #初心者 #学ぶ

シェアしていただけるとうれしいです。

HelloJavaGameを修正しました。

おはようございます。きんです。
おひさしぶりです。

生きてはいますが、本業が忙しいですね。
Javaではなく、JavaScript、TypeScriptをやっています。
フロントエンド、クライアントサイド側ですね。

バックエンドはJavaですね。
なんとかがんばっていきますーーー。

夏本番になってきますね。
暑くなってきますが、お元気でお過ごしください(^^)

あっ!お題の話をホントに忘れていました(笑)
(ホントに忘れるところだった・・・汗)

HelloJavaGameを修正しました。

問い合わせを受けまして、見直したところ、
JavaファイルがShift_JISのままになってて、
コンパイルがかからない状態でした。

申し訳ありませんでした(_ _*

Java~がんばってください~(^O^)ノ

Javaでゲームを作ろう○- 共通編 -
https://kinchannn.jp/javagame_common/

シェアしていただけるとうれしいです。

※※※ 紙版-100円しました! ※※※ Javaでゲームを作ろう1 第3版を発売しました! 

Javaでゲームを作ろう1 第3版を発売しました!

そして・・・

紙版をすることができました!

紙版

https://amzn.to/3VvXBx6

Kindleはこちら♪

https://amzn.to/3EIFpK3

ワンコインの道は厳しいですが、できる範囲で努力してみました。
引き続き、よろしくお願いいたします(_ _*

Javaでゲームを作ろう1 - シューティングゲーム編 -

シェアしていただけるとうれしいです。

Javaでゲームを作ろう0 - ゲーム基本編 - 第3版を発売しました!(値下げ断行!)

こんにちは。きんです!

Javaでゲームを作ろう0 - ゲーム基本編 - 第3版を発売しました!

いろいろと新しくする理由があって、細かいところを修正しています。
大きな流れは、第1版から変わりはありません。

あと、もうひとつ・・・。

販売価格を下げることができました!

\(⌒▽⌒)/ワーイ!
今は世の中、値上げの嵐ですよね・・・。正直、つらい・・・。

工夫することによって、値段を下げることができました。
(ワンコインの夢はついえたかも・・・でも、努力しました!)
(Kindle版は300円と、ワンコインです!紙にすると、そうはいかないみたいですね・・・)
これ以上は無理っぽいですが、できる範囲でがんばってみました!

他の本も値段を下げれないか、検討をしていきます。(1とか3とか、TheJavaも)
本業の方が忙しいので、少し時間がかかりますが、進めていきたいと思います。

↓本(紙)

https://amzn.to/3fRyIgh

↓Kindle

https://amzn.to/3UJ5RJW

紹介サイト(わたしのHP)
https://kinchannn.jp/javagame_kihon/

それではーがんばっていくぞおーーー!!

シェアしていただけるとうれしいです。

音楽関連、本日アップしました!音楽を鳴らしていこう♪ JavaFXメディア(サウンド) - Java使いこなす 026

音楽関連、アップしました!

音楽を鳴らしていこう♪ (第1回-概要の辺り)JavaFXメディア(サウンド) - Java使いこなす 026


https://youtu.be/uGoFQhz_o4c

音楽を鳴らしていこう♪(第1回-APIを知る) Javaサウンド - Java使いこなす 024


https://youtu.be/8xDJjj68Wi0

音楽を鳴らしていこう♪(第2回-音楽を鳴らそう♪) Javaサウンド - Java使いこなす 025


https://youtu.be/up11XhZ7LTU

↓↓↓関連ページ↓↓↓

Java使いこなす(動画を見ながらJavaへの理解を深める)

シェアしていただけるとうれしいです。

Java使いこなす 画面を表示してみよう はじめました。Youtube、アップしました!

次のシリーズ、はじめました。

Java使いこなす 画面を表示してみよう その1 - 013

Java使いこなす 画面を表示してみよう その2 - 014

https://kinchannn.jp/

よろしくお願いいたします!\(^O^)/

シェアしていただけるとうれしいです。

Java使いこなす「会話してみよう」シリーズ、完結しました!Youtube、アップしました!

Java使いこなす「会話してみよう」シリーズ、完結しました!

010 時間帯によって挨拶を変えてみよう♪


https://youtu.be/zwpsXtM_B5Y

011 君に挨拶(あいさつ)♪
プログラムを作成していきます。


https://youtu.be/9TD6hYznVmI

012 まとめ
今まで学んできたことを まとめていきたいと思います。


https://youtu.be/GzC0t-F313c

https://kinchannn.jp/

よろしくお願いいたします!\(^O^)/

シェアしていただけるとうれしいです。