На этот вопрос уже есть ответ здесь:
Я создал исполняемый файл jar и использовал commons-cli, чтобы дать пользователю возможность указывать параметры командной строки при запуске клиента. Все работает нормально. Однако, когда я печатаю инструкцию по использованию jar, я хочу показать следующее:
usage: java -jar myprog.jar
--help Display the help message
--debug Enable debugging
....
Печать всех опций легко выполняется с помощью commons-cli. Тем не менее, строка «использование» — это головная боль. Кажется, я не могу найти способ получить имя «myprog.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;
}
}