主な方法を考えてみましょう:
public static void main(String[] args) throws Exception {
System.out.println("property='" + System.getProperty("property") + "'");
List<String> inputArgs = ManagementFactory.getRuntimeMXBean().getInputArguments();
System.out.println("jvm input args size: " + inputArgs.size());
System.out.println("jvm input args: " + inputArgs);
}
プログラムの実行結果:
>java -Dproperty=hey!
property='hey!'
jvm input args size: 1
jvm input args: [-Dproperty=hey!]
>java -Dproperty="one two three"
property='one two three'
jvm input args size: 3 //but there's only one input property!
jvm input args: [-Dproperty=one, two, three] //!!!
少なくとも、これは Mac 上の Oracle/Sun の jvm 6 での動作です) & win での動作です (他の場所ではテストしていません)。
システムプロパティにスペースが含まれている場合に信頼できる入力引数を取得する方法を知っている人はいますか?