【Java】実行可能jarファイルのプログラム終了コードをbat側で判定する
今回はjarファイルをコマンド (bat) から実行し、jarファイルから受け取ったプログラム終了コードをbat側で取得することを実現していきます。
実行可能jarファイルのプログラム終了コードをbat側で判定する
今回使用した環境
インターネット接続可能のオンラインの環境
64 ビット オペレーティング システム
Windows 10 22H2
Java 17
ソースコード
処理の内容としては、受け取ったコマンド引数によって
コマンド引数が数値であれば正常 ( 終了コード:"0″ )、文字であれば異常 ( 終了コード:"0″以外 ) を返すだけのプログラムです。
※終了コードを返す「System.exit」のメソッドは呼び出すとその時点でプログラム強制終了となる ( try の中で呼び出したとしても finally は実行されない ) となるので注意が必要です。
以下のJAVAソースより実行可能jarファイル「battest.jar」を作成します。
package battest;
/**
* コマンド引数が数値の場合、正常
* 文字の場合、異常
* を返すプログラム
*/
public class BatTest {
public static void main(String[] args) {
// プログラム終了コードを正常に設定
int endCode = 0;
// コマンド引数が設定されていない場合、異常終了
if (args.length == 0) {
System.out.println("コマンド引数が設定されていません");
// プログラム終了コードを異常に設定し、処理終了
endCode = 9;
System.exit(endCode);
}
String inputValue = args[0];
try {
// ここで数値変換できない場合、例外発生でcatchへ
Integer.parseInt(inputValue);
System.out.println(
"入力された文字「" + inputValue + "」は数値です");
} catch (Exception e) {
System.out.println(
"入力された文字「" + inputValue + "」は数値ではありません");
// プログラム終了コードを異常に設定
endCode = 3;
} finally {
// 処理終了
System.exit(endCode);
}
}
}
こちらは作成した実行可能jarファイル「battest.jar」を実行するためのbatファイルです。
jarファイルから受け取った終了コードを表示して正常、または異常の判定をしています。
@echo off
rem 入力値を受け取る
set arg=%1
rem jarファイルの実行
java -jar battest.jar %1
if %errorlevel% == 0 (
echo jarファイル終了コード:%errorlevel%
echo 正常終了
) else (
echo jarファイル終了コード:%errorlevel%
echo 異常終了
)
動作確認
動作確認は以下の3パターンでテストします。
1.コマンド引数に"123″を入力 → 正常終了の想定
2.コマンド引数なし → 異常終了の想定
3.コマンド引数に"ABC"を入力 → 異常終了の想定
想定通りの結果となりました。
以上となります。
ここまでお読みいただきありがとうございました。