■ 発生した環境
* OS : Debian8
* Java : Java1.8.0_65
■ 結論
System.exit() に設定する値は『0~255』の範囲に限る
■ 調査で使用したコード
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class SampleA {
public static void main(String[] args) {
for (int i = -300; i < 300; i++) {
String value = String.valueOf(i);
System.out.println("[" + value + "]");
execute("java", "-jar", "SampleB.jar", value);
}
}
private static void execute(String... commands) {
ProcessBuilder processBuilder = new ProcessBuilder(commands);
try {
Process process = processBuilder.start();
int result = process.waitFor();
System.out.println("Result Code : " + result);
if (result != 0) {
System.err.println("Error!");
}
try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
}
try (BufferedReader errorBufferedreader = new BufferedReader(new InputStreamReader(process.getErrorStream()))) {
String errorLine;
while ((errorLine = errorBufferedreader.readLine()) != null) {
System.err.println(errorLine);
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
SampleB.jar にする
public class SampleB {
public static void main(String[] args) {
int inputValue = Integer.valueOf(args[0]);
System.out.println("inputValue : " + inputValue);
System.exit(inputValue);
}
}
実行結果(抜粋)
・・・
[-2]
Result Code : 254 ★NG★
inputValue : -2
[-1]
Result Code : 255 ★NG★
inputValue : -1
[0]
Result Code : 0 ☆OK☆
inputValue : 0
[1]
Result Code : 1 ☆OK☆
inputValue : 1
・・・
[255]
Result Code : 255 ☆OK☆
inputValue : 255
[256]
Result Code : 0 ★NG★
inputValue : 256
[257]
Result Code : 1 ★NG★
inputValue : 257