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