命令行集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());