1. ホーム
  2. java

複数のシステムプロパティを設定する Java コマンドライン

2023-10-20 18:12:09

質問

Java プログラムへのコマンドラインで、複数の System Properties を指定するために、複数の -D ステートメントを持つよりも簡単な方法はありますか?

これを避けようとしています。

 java -jar -DNAME="myName" -DVERSION="1.0" -DLOCATION="home" program.jar

を使った例を見たことがあるような気がしました。 -D を使い、その後に引用符で囲んだ文字列を使う例を見た気がするのですが、その例をもう一度見つけることができません。

どのように解決するのですか?

答えは「ノー」です。誰かが次のようなことを設定した例を見たことがあるかもしれません。

-DArguments=a=1,b=2,c=3,d=4,e=cow

この場合、アプリケーションは Arguments プロパティ文字列の値を解析して、個々の値を取得します。 あなたの main で、キーとなる値を取得することができます(入力フォーマットが保証されていることが前提です)。

String line = System.getProperty("Arguments");
if(line != null) {
  String str[] = line.split(",");
    for(int i=1;i<str.length;i++){
        String arr[] = str[i].split("=");
        System.out.println("Key = " + arr[0]);
        System.out.println("Value = " +  arr[1]);
    }
}

また -D はメインクラスの前、もしくは jar ファイルの前に記述する必要があります。例. java -DArguments=a=1,b=2,c=3,d=4,e=cow MainClass