2017-10-28 87 views

回答

6

没有-D,你创建的参数。使用-D,您正在定义系统属性,它是从System.getPropertiesSystem.getProperty获取的。某些系统属性具有预定义的含义,如定义用户主目录的user.dir。更多关于“系统属性”here

这是记录在the tools documentation for the java tool

-Dproperty=value

设置系统属性值。该属性变量是一个不带空格的字符串,表示该属性的名称。值变量是一个表示属性值的字符串。如果value是带空格的字符串,则将其用引号引起来(例如-Dfoo="foo bar")。

+0

这是否会更改已在系统环境中定义的属性的值? – GardenMan

+0

我查过了。它确实改变了。 – GardenMan

3

选项-Dproperties它从参数

尝试不同:将传递到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)); 

    } 
} 
+0

什么属性?你能提供更详细的信息吗? – GardenMan

相关问题