1

UNIX shell 程序有一个方便的属性,即第一个参数是被调用程序的名称。所以我可以写这样的东西:

#!/bin/sh
echo "You ran $0."

当我运行它时,我得到:

$ sh foo.sh 
You ran foo.sh.

当您想要捕获错误的调用并提供使用字符串时,这特别有用,例如:

Usage: foo.sh -a [AAAAA] -b [BBBBB] -c [CCCCC]

我怎样才能对像这样调用的 JAR 文件执行此操作java -jar MyJAR.jar?对于 Scala mainargs(0)只是用户传递的第一个参数,而不是调用程序的名称。我希望能够打印出来:

Usage: MyJAR.jar -a [AAAAA] -b [BBBBB] -c [CCCCC]

有任何想法吗?

4

1 回答 1

2

你可以试试这个:

val path = myClass.getClass.getProtectionDomain.getCodeSource.getLocation.getPath

只要myClass是您正在运行的 jar 文件中定义的类的实例,这应该可以工作。

于 2012-04-18T15:11:56.097 回答