【Java】 java -jar 命令 传递系统参数 与 main函数参数 顺序
    
package com.liyao.runner;
/**
 * 用法: java [-options] class [args...]
 *            (执行类)
 *    或  java [-options] -jar jarfile [args...]
 *            (执行 jar 文件)
 * 可以看到,jvm参数和程序参数的传参位置是不同的,jvm参数常见的是一些系统变量,会通过-D参数指定,这类型参数是[-options]里的,需要放在执行的主类名或者jar包之前,main函数参数放在最后,也就是主类名或者jar包后面
 * 如果参数位置不对,则会导致程序内部获取不到参数,比如把-D类型的参数放到了最后,那么-D整体会被当做main函数的参数,而不是系统参数,具体可以输入java -jar,看下手册
 */
public class MyRunner {
    /**
     * case1:
     * java -DmyEnv=haha -cp ./: com.liyao.runner.MyRunner abc
     * envVar: haha
     * arg1: abc
     *
     * case2:
     * java  -cp ./: com.liyao.runner.MyRunner -DmyEnv=haha abc
     * envVar: null
     * arg1: -DmyEnv=haha
     * 获取不到系统参数,系统参数被当做main函数参数传入了
     */
    public static void main(String[] args) {
        String envVar = System.getProperty("myEnv");
        System.out.println("envVar: " + envVar);
        if (args.length > 0) {
            String arg1 = args[0];
            System.out.println("arg1: " + arg1);
        }
    }
    /**
     用法: java [-options] class [args...]
     (执行类)
     或  java [-options] -jar jarfile [args...]
     (执行 jar 文件)
     其中选项包括:
     -d32     使用 32 位数据模型 (如果可用)
     -d64     使用 64 位数据模型 (如果可用)
     -server      选择 "server" VM
     默认 VM 是 server,
     因为您是在服务器类计算机上运行。
     -cp <目录和 zip/jar 文件的类搜索路径>
     -classpath <目录和 zip/jar 文件的类搜索路径>
     用 : 分隔的目录, JAR 档案
     和 ZIP 档案列表, 用于搜索类文件。
     -D<名称>=<值>
     设置系统属性
     -verbose:[class|gc|jni]
     启用详细输出
     -version      输出产品版本并退出
     -version:<值>
     警告: 此功能已过时, 将在
     未来发行版中删除。
     需要指定的版本才能运行
     -showversion  输出产品版本并继续
     -jre-restrict-search | -no-jre-restrict-search
     警告: 此功能已过时, 将在
     未来发行版中删除。
     在版本搜索中包括/排除用户专用 JRE
     -? -help      输出此帮助消息
     -X            输出非标准选项的帮助
     -ea[:<packagename>...|:<classname>]
     -enableassertions[:<packagename>...|:<classname>]
     按指定的粒度启用断言
     -da[:<packagename>...|:<classname>]
     -disableassertions[:<packagename>...|:<classname>]
     禁用具有指定粒度的断言
     -esa | -enablesystemassertions
     启用系统断言
     -dsa | -disablesystemassertions
     禁用系统断言
     -agentlib:<libname>[=<选项>]
     加载本机代理库 <libname>, 例如 -agentlib:hprof
     另请参阅 -agentlib:jdwp=help 和 -agentlib:hprof=help
     -agentpath:<pathname>[=<选项>]
     按完整路径名加载本机代理库
     -javaagent:<jarpath>[=<选项>]
     加载 Java 编程语言代理, 请参阅 java.lang.instrument
     -splash:<imagepath>
     使用指定的图像显示启动屏幕
     有关详细信息, 请参阅 http://www.oracle.com/technetwork/java/javase/documentation/index.html。
     */
}