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

标签 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]

有什么想法吗?

最佳答案

你可以试试这个:

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

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

关于java - 如何确定 Scala 中调用的 JAR 的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10211727/

相关文章:

java - Java 使用什么类来存储数组以及如何在 Scala 中实例化它?

ruby - 如何将命令行参数传递给capistrano

node.js - 从命令行向 Node.js 脚本发送字符串和回车键

java - 在 RESTFul Web 服务中使用 JMS

java - AnimationTimer stop()方法不停止

java - 附加代码点()和代码点()

scala - Gradle scala 项目和私有(private)编译选项

scala - => 和 () => 在 Scala 中意味着什么

macos - ImageMagick 转换缓存目录

Java异常处理用户输入