正确使用 Java -D 命令行参数

2022-08-31 07:07:50

在 Java 中传递 -D 参数时,编写命令行然后从代码访问它的正确方法是什么?

例如,我尝试过写这样的东西...

if (System.getProperty("test").equalsIgnoreCase("true"))
{
   //Do something
}

然后这样称呼它...

java -jar myApplication.jar -Dtest="true"

但是我收到了一个NullPointerException。我做错了什么?


答案 1

我怀疑问题是你把“-D”放在.试试这个:-jar

java -Dtest="true" -jar myApplication.jar

从命令行帮助:

java [-options] -jar jarfile [args...]

换句话说,您目前获取它的方式将被视为要传递给的参数之一,而不是JVM参数。-Dtest="true"main

(您可能也应该删除引号,但无论如何它都可能有效 - 这可能取决于您的shell。


答案 2

那应该是:

java -Dtest="true" -jar myApplication.jar

然后,以下命令将返回该值:

System.getProperty("test");

不过,该值可以是 ,因此请使用以下值来防止异常:nullBoolean

boolean b = Boolean.parseBoolean( System.getProperty( "test" ) );

请注意,getBoolean 方法委托系统属性值,从而将代码简化为:

if( Boolean.getBoolean( "test" ) ) {
   // ...
}