1

UNIX シェル プログラムには、最初の引数が呼び出されたプログラムの名前であるという便利なプロパティがあります。だから私は次のように書くことができます:

#!/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 に答える