【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"を入力 → 異常終了の想定

想定通りの結果となりました。

以上となります。

ここまでお読みいただきありがとうございました。

Java

Posted by だゆう