如何在Scala中确定调用的JAR的名称?

时间:2012-04-18 14:38:03

标签: java scala command-line command-line-arguments

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

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

当我跑步时,我得到:

$ sh foo.sh 
You ran foo.sh.

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

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

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

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

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

你可以试试这个:

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

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