设置多个系统属性 Java 命令行

2022-08-31 13:11:58

有没有更简单的方法可以在命令行上为Java程序指定多个系统属性,而不是拥有多个-D语句?

试图避免这种情况:

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

我以为我见过一个示例,其中有人在那之后使用一个和一些引号字符串,但我再也找不到这个例子了。-D


答案 1

答案是否定的。您可能已经看到一个示例,其中有人会设置如下内容:

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

然后,应用程序将分析属性字符串的值以获取单个值。在你的中,你可以得到键值作为(假设输入格式是有保证的):Argumentsmain

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]);
    }
}

此外,在 java 命令行中,应该在主类或文件之前。例:-Djarjava -DArguments=a=1,b=2,c=3,d=4,e=cow MainClass


答案 2

文档中没有任何内容提到类似的事情。

这里有一句话:

-Dproperty=value 设置系统属性值。如果 value 是包含空格的字符串,则必须将字符串括在双引号中:

java -Dfoo=“some string” SomeClass


推荐