Groovy为什么不尊重我的命令行开关?

问题描述:

我有以下的Groovy类:Groovy为什么不尊重我的命令行开关?

class MyApp { 
    public static void main(String[] args) { 
     String name = System.getProperty("name") 
     println "My name is ${name}." 
    } 
} 

当我包起来作为一个可执行的JAR文件,然后运行它(java -jar myapp.jar -Dname=Earl),这里是输出我得到:

我的名字是空。

为什么name空,而不是 “厄尔”?

java可执行文件将主类/ Jar之后的所有内容视为main方法的参数。尝试java -Dname=Earl -jar myapp.jar。 (除非Jar是一个胖Jar或者其清单类路径指向Groovy Jar,否则您必须通过使用-cp)。