我发现只有当我将-Dcontext=web
放入VM参数时,才能通过System.getproperty
方法读取该值。我想知道这两者之间的区别是什么?
答案 0 :(得分:28)
程序参数是传递给程序的参数,可在主方法的args
数组中找到
public static void main(String[] args)
VM参数传递给虚拟机,旨在指示VM执行某些操作。您可以执行诸如控制堆大小等操作。如您所述,您可以通过调用System.getProperty()
来访问它们。
答案 1 :(得分:1)
程序args可通过main(String args [])方法
的args []获得答案 2 :(得分:1)
程序参数进入main()方法:
public static void main(String[] args) // here
答案 3 :(得分:1)
程序参数:程序参数是传递给应用程序的参数,可以通过main方法的“args”String数组参数访问。
VM参数: VM参数是JVM执行程序所需的环境或系统参数。 VM参数从系统属性中读取,如下面的java指令。
System.getProperty(sysProp1)
代码段:
public static void main(String[] args) {
String sysProp1 = "sysProp1";
System.out.println("\t System Propery Name:" + sysProp1 + ", Value:" + System.getProperty(sysProp1));
System.out.println("\t Program Variable Test Propery Name:" + args[0]);
}
有两种方法可以传递这两个参数值。
来自Eclipse:
命令行参数:
java -cp projectJar-2.0-SNAPSHOT-jar-with-dependencies.jar com.first.jobs.IndexJob testing -DsysProp1=testing
答案 4 :(得分:0)