Java 什么';程序参数和虚拟机参数之间的区别是什么?

Java 什么';程序参数和虚拟机参数之间的区别是什么?,java,eclipse,Java,Eclipse,我发现只有在将-Dcontext=web放入VM参数时,才能通过System.getproperty方法读取该值。我想知道这两者之间有什么区别?程序参数可通过main(String args[])方法的args[]获得程序参数进入main()方法: 程序参数是传递给程序的参数,在主方法的args数组中可用 public static void main(String[] args) 虚拟机参数被传递到虚拟机,用于指示虚拟机执行某些操作。您可以执行诸如控制堆大小等操作。您的程序可以通过调用Sy

我发现只有在将
-Dcontext=web
放入VM参数时,才能通过
System.getproperty
方法读取该值。我想知道这两者之间有什么区别?

程序参数可通过main(String args[])方法的args[]获得

程序参数进入main()方法:


程序参数是传递给程序的参数,在主方法的
args
数组中可用

 public static void main(String[] args)
虚拟机参数被传递到虚拟机,用于指示虚拟机执行某些操作。您可以执行诸如控制堆大小等操作。您的程序可以通过调用
System.getProperty()
来访问它们,如您所述。

  • 程序参数-我们通常传递到程序中的参数。可以使用main方法中的“args”字符串数组访问此类型参数
  • VM arguments—传递到Java解释器的参数

程序参数:程序参数是传递给应用程序的参数,可通过主方法的“args”字符串数组参数访问

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 -DsysProp1=testing123456 projectJar-2.0-SNAPSHOT-jar-with-dependencies.jar 123
为了更好地演示,请使用多行

 java -cp 
      -DsysProp1=testing123456 
      projectJar-2.0-SNAPSHOT-jar-with-dependencies.jar 
      123

顺便说一句,
VM参数
jar
之前,使用
-D
程序参数
jar
之后,只是为了添加一个关于
-Djava.library.path=/path/to/folder/
的微妙点。
System.loadLibrary()
无法链接本机库,尽管
System.getProperty(“java.library.path”)
返回本机库所在的
/path/to/folder/
字符串。例如,在EclipseIDE中,您必须在IDE菜单设置中专门设置此文件夹位置的值。通过
System.setProperty()
以编程方式设置它将不起作用。
 java -cp 
      -DsysProp1=testing123456 
      projectJar-2.0-SNAPSHOT-jar-with-dependencies.jar 
      123