美文网首页
命令行参数、JVM参数、环境变量的区别

命令行参数、JVM参数、环境变量的区别

作者: m2fox | 来源:发表于2020-05-20 23:25 被阅读0次

直接看代码:

public class TestProperty {
    public static void main(String[] argv) {
        // - 命令行参数
        System.out.println(argv[0]);
        System.out.println(argv[1]);

        // - JVM虚拟机参数
        System.out.println(System.getProperty("vm_prop1"));
        System.out.println(System.getProperty("vm_prop2"));

        // - 环境变量
        System.out.println(System.getenv("env_param1"));
    }
}

使用以下命令编译、运行上面代码:

export env_param1=myenv
javac TestProperty.java
java -Dvm_prop1=abc -Dvm_prop2=123 TestProperty cmd_arg1 cmd_arg2

输出:

cmd_arg1
cmd_arg2
abc
123
myenv

可以看出:

  • 命令行参数是跟在运行的类名后面的位置参数,位置从0开始,在代码中用argv[N]的方式获取。
  • JVM参数是跟在java命令后以-D开头、-Dkey=value格式的参数,在代码中用System.getProperty(key)的方式获取。同时也可以用System.setProperty(key, value)的方式设置参数,作为参数传递的一种方式。
  • 环境变量是export命令导入的环境变量,对所有进程都生效,在代码中用System.getenv(key)的方式获取。

相关文章

网友评论

      本文标题:命令行参数、JVM参数、环境变量的区别

      本文链接:https://www.haomeiwen.com/subject/xqboohtx.html