设置多个系统属性Java命令行
有没有更简单的方法来指定多个系统属性的命令行到Java程序,而不是有多个-D语句?
试图避免这一点:
java -jar -DNAME="myName" -DVERSION="1.0" -DLOCATION="home" program.jar
我以为我看过一个人的例子,之后使用了一个-D
和一些引用的string,但我再也找不到这个例子。
答案是否定的。 你可能已经看到一个例子,有人可能会设置这样的:
-DArguments=a=1,b=2,c=3,d=4,e=cow
然后,应用程序将parsingArguments
属性string的值以获取单个值。 在你的main
你可以得到的关键值为(假设input格式是保证):
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
应该在java命令行的主类或jar
文件之前。 例如: java -DArguments=a=1,b=2,c=3,d=4,e=cow MainClass
不要将属性作为parameter passing,您可以使用.properties来存储它们。
文档上没有提到类似的东西。
这是一个报价:
-Dproperty = value设置系统属性值。 如果value是一个包含空格的string,则必须将该string括在双引号中:
java -Dfoo =“一些string”SomeClass
如果所需的属性需要在系统中设置,那么没有选项比-D但是如果您在引导应用程序时需要这些属性,那么通过proerties文件加载属性是最佳select。 它不需要改变一个属性的构build。