是否有办法区分使用-D
选项从命令行设置的Java系统属性与默认情况下具有相同值的系统属性?
,例如,这个程序
class Test {
public static void main(String[] args) {
System.out.println(System.getProperty("user.home"));
}
}
打印
/home/uckelman
对我来说无论我是否将其作为
java Test
或
java -Duser.home=/home/uckelman Test
JDK提供哪些东西我可以测试以区分这两种情况?
答案 0 :(得分:3)
一种方法是获取用于启动JVM的命令行参数,并检查返回的List是否设置了给定的系统属性。
RuntimeMXBean mx = ManagementFactory.getRuntimeMXBean();
System.out.println("COMMAND LINE ARGS:\n" + mx.getInputArguments());