java -D VM启动参数含义

-D<name>=<value> : set a system property 设置系统属性。

官方解释:

Set a system property value. If  value  is a string that contains spaces, you must enclose the string in double quotes
设置一个系统属性值,如果值是字符串包含了空格,则必须添加双引号

1.java -D参数简化加入多个jar

java命令引入jar时可以-cp参数,但时-cp不能用通配符(多个jar时什么烦要一个个写,不能*.jar),面通常的jar都在同一目录,且多于1个。)-Djava.ext.dirs 就可以解决 多个jar的问题

如:

# 运行MyClass的主函数时,添加java.ext.dirs属性的值为lib,即将lib中的jar包加入到这个即将启动的java进程中
java -Djava.ext.dirs=lib MyClass  

2.可以在运行前配置一些属性,比如其他属性

java -Dconf1="wqbin" Myclass

可以通过System.getProperty("conf1");获得这个值

也可以从idea上看:

img

3.补充Standard System Properties

Key Meaning
"file.separator" Character that separates components of a file path. This is "/" on UNIX and "\" on Windows.
"java.class.path" Path used to find directories and JAR archives containing class files. Elements of the class path are separated by a platform-specific character specified in the path.separator property.
"java.home" Installation directory for Java Runtime Environment (JRE)
"java.vendor" JRE vendor name
"java.vendor.url" JRE vender URL
"java.version" JRE version number
"line.separator" Sequence used by operating system to separate lines in text files
"os.arch" Operating system architecture
"os.name" Operating system name
"os.version" Operating system version
"path.separator" Path separator character used in java.class.path
"user.dir" User working directory
"user.home" User home directory
"user.name" User account name

4.测试

设置虚拟机启动参数

测试代码

public class AppRun {
    public static void main(String[] args) {
        System.out.println("----------------------------------------------------------------");
        String test = System.getProperty("test");
        System.out.println("VMoptions -Dtest=" + test);
        System.out.println("Program arguments(程序入口主函数main(String[] args)接收到的参数值)");
        for (String arg : args) {
            System.out.println(arg);
        }
    }
}

IDEA控制台输出

posted @ 2022-03-20 11:28  黄河大道东  阅读(247)  评论(0编辑  收藏  举报