使用命令行设置Java系统属性
在阅读java使用命令行设置Java系统属性,java,command-line,jvm-arguments,system-properties,Java,Command Line,Jvm Arguments,System Properties,在阅读javaman页面时,我发现了-Dproperty=value标志,该标志表明通过传递该标志,它将创建一个value=value的系统属性。 我编写了一个测试java代码: class File{ public static void main(String[] args){ System.out.println("HOLA"); System.out.println(System.getProperty("blah")); } } 我用j
man
页面时,我发现了-Dproperty=value
标志,该标志表明通过传递该标志,它将创建一个value=value的系统属性。
我编写了一个测试java代码:
class File{
public static void main(String[] args){
System.out.println("HOLA");
System.out.println(System.getProperty("blah"));
}
}
我用javac File.java
编译了同样的代码,然后用java File-Dblah=blah命令运行,但是我得到了以下输出
HOLA
null
然后我使用asjava-Dblah=blah文件运行,然后得到了预期的输出:
HOLA
blah
问题是:这是一个bug还是一个故意的行为。这看起来确实是一个bug,因为在大多数程序中,命令行中的顺序并不重要 D
必须位于类名之前,因为类名之后的任何内容都被视为Java应用程序本身的参数。。。Java应用程序可以选择使用-D
或任何其他JVM选项执行任何它喜欢的操作
基本上,语法是:
java [jvm-args] class-name [application-args]
系统属性(以及类路径等其他选项)需要在程序参数之前传递。见:
java [ options ] class [ arguments ]