定期的に毎回悩んで、思い出しているのでメモしておきます。
Javaのコマンドに付けてメモリの確保量などを定義する「システムプロパティ」
ですが記載順によってクラスから参照できる/できないが明確になっています。
環境
$java -version
java version "1.8.0_131"
サンプルクラス
「kusatest」というシステムプロパティをクラスから参照して出力します
Test.java
import java.util.*;
public class Test {
public static void main(String[] args) {
System.out.println("start");
System.out.println(System.getProperty("kusatest"));
System.out.println("end");
}
}
参照できる例
$ java -Dkusatest=a Test
start
a
end
参照できない例
$ java Test -Dkusatest=a
start
null
end
自分はクラス/Jarを書いてプロパティを後から書くので間違いがちでした。
毎回忘れて数時間無駄にするので、もう忘れないようにしたい。