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]
有什么想法吗?
最佳答案
你可以试试这个:
val path = myClass.getClass.getProtectionDomain.getCodeSource.getLocation.getPath
只要 myClass
是您正在运行的 jar 文件中定义的类的实例,该方法就应该有效。
关于java - 如何确定 Scala 中调用的 JAR 的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10211727/