実行可能jarを作成し、commons-cliを使用して、ユーザーがクライアントを起動するときにコマンドラインパラメーターを指定できるようにしました。すべてが正常に動作します。ただし、jarの使用法ステートメントを印刷するときは、次のように表示したいと思います。
usage: java -jar myprog.jar <options> <file>
--help Display the help message
--debug Enable debugging
....
すべてのオプションの印刷は、commons-cliを使用して簡単に実行できます。ただし、「使用法」の行はヘッドスクラッチャーです。アプリケーションに渡されるargs[]から「myprog.jar」の名前を取得する方法がわからないようです。
これを行う簡単な方法はありますか?かなり複雑なメソッドを使用して、クラスのクラスローダーからトレースをバックトレースし、それがjar内に含まれているかどうかを判断できますが、それは非常に単純な質問に対するかなり醜い答えのようです。
private String getPath(Class cls) {
String cn = cls.getName();
String rn = cn.replace('.', '/') + ".class";
String path =
getClass().getClassLoader().getResource(rn).getPath();
int ix = path.indexOf("!");
if(ix >= 0) {
return path.substring(0, ix);
} else {
return path;
}
}