当我们通过命令行java虚线参数(如-D)和没有虚线之间的区别是什么?
$ java -jar someJar.jar arg1 arg2
推出jar文件我们可以仅仅通过空间添加参数传递的说法。但有时候我会遇到那些以像Darg1,-Darg2这样的破折号开头的争论。 他们有什么区别?
当我们通过命令行java虚线参数(如-D)和没有虚线之间的区别是什么?
$ java -jar someJar.jar arg1 arg2
推出jar文件我们可以仅仅通过空间添加参数传递的说法。但有时候我会遇到那些以像Darg1,-Darg2这样的破折号开头的争论。 他们有什么区别?
没有-D
,你创建的参数。使用-D
,您正在定义系统属性,它是从System.getProperties
和System.getProperty
获取的。某些系统属性具有预定义的含义,如定义用户主目录的user.dir
。更多关于“系统属性”here。
这是记录在the tools documentation for the java
tool:
-Dproperty=value
设置系统属性值。该属性变量是一个不带空格的字符串,表示该属性的名称。值变量是一个表示属性值的字符串。如果value是带空格的字符串,则将其用引号引起来(例如
-Dfoo="foo bar"
)。
选项-D
是properties它从参数
尝试不同:将传递到main
在其字符串数组java -DsysProp1=value1 -DsysProp2=value2 -jar someJar.jar arg1 arg2
package test;
import java.io.IOException;
public class ArgsTest {
public static void main(String[] args) throws IOException {
System.out.println("Program Arguments:");
for (String arg : args) {
System.out.println("\t" + arg);
}
System.out.println("System Properties from VM Arguments");
String sysProp1 = "sysProp1";
System.out.println("\tName:" + sysProp1 + ", Value:" + System.getProperty(sysProp1));
String sysProp2 = "sysProp2";
System.out.println("\tName:" + sysProp2 + ", Value:" + System.getProperty(sysProp2));
}
}
什么属性?你能提供更详细的信息吗? – GardenMan
这是否会更改已在系统环境中定义的属性的值? – GardenMan
我查过了。它确实改变了。 – GardenMan