Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
命令行集Java系统属性能否与默认值区分开来?_Java - Fatal编程技术网

命令行集Java系统属性能否与默认值区分开来?

命令行集Java系统属性能否与默认值区分开来?,java,Java,有没有办法区分使用-D选项从命令行设置的Java系统属性和默认值相同的系统属性 例如,这个程序 class Test { public static void main(String[] args) { System.out.println(System.getProperty("user.home")); } } 印刷品 /home/uckelman 对我来说,不管我是否以 或 JDK是否提供了任何我可以测试的东西来区分这两种情况?一种方法是获取用于启动JVM的命令行参

有没有办法区分使用
-D
选项从命令行设置的Java系统属性和默认值相同的系统属性

例如,这个程序

class Test {
  public static void main(String[] args) {
    System.out.println(System.getProperty("user.home"));
  }
}
印刷品

/home/uckelman
对我来说,不管我是否以


JDK是否提供了任何我可以测试的东西来区分这两种情况?

一种方法是获取用于启动JVM的命令行参数,并检查返回的列表(如果设置了给定的系统属性)

RuntimeMXBean mx = ManagementFactory.getRuntimeMXBean();
System.out.println("COMMAND LINE ARGS:\n" + mx.getInputArguments());

为什么要这样做?
-D
表示用户意向性,即使它与默认值匹配。对,您计划如何使用它?
java -Duser.home=/home/uckelman Test
RuntimeMXBean mx = ManagementFactory.getRuntimeMXBean();
System.out.println("COMMAND LINE ARGS:\n" + mx.getInputArguments());