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 main
,args(0)
只是用户传递的第一个参数,而不是被调用程序的名称。我希望能够打印出来:
Usage: MyJAR.jar -a [AAAAA] -b [BBBBB] -c [CCCCC]
有什么想法吗?
答案 0 :(得分:2)
你可以试试这个:
val path = myClass.getClass.getProtectionDomain.getCodeSource.getLocation.getPath
只要myClass
是您正在运行的jar文件中定义的类的实例,这应该有效。