В настоящее время я использую библиотеку Apache Commons CLI 1.3.1
для анализа аргументов командной строки и управления потоком выполнения в исполняемой банке. До сих пор все было довольно просто, а страницы documentation и example usage были относительно тщательными и полезными.Использование CLI Apache Commons для обнаружения отсутствия аргументов командной строки/параметров
Однако я все еще не понимаю, как использовать эту библиотеку для обнаружения отсутствия каких-либо аргументов или опций. Я хотел бы обнаружить это условие, а затем распечатать инструкцию использования/справки. Я обошел это, просто проверив длину массива аргументов, но я хотел бы знать, есть ли у библиотеки способ обнаружения этого условия, не проверяя наличие каждой опции.
Вот мой код с обходным оставил в:
public static void main(String[] args)
{
try
{
// create Options object
Options options = new Options();
// add t option
options.addOption("t", false, "display current time");
options.addOption("help", false, "print this message");
CommandLineParser parser = new DefaultParser();
CommandLine cmd = parser.parse(options, args);
if(cmd.hasOption("t")) {
log.debug("Received option t");
// Do something
}
if (args.length <= 0 || cmd.hasOption("help"))
{
// automatically generate the help statement
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("java -jar Client.jar <option> <arguments>", options);
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
B сные. Я неправильно понял документацию. Я думал, что это список аргументов, представленных для определенного варианта. Спасибо. BTW это должно быть 'cmd.getArgs(). Length' – Matt1776
Но может быть важно отметить, что это не сработает, если ваша программа ожидает переключения без аргументов. Например, если я использую этот метод, то help будет печататься, даже если команда 'client.jar -t' – Matt1776
Привет, спасибо за исправление! Если ваша программа не должна иметь избыточных аргументов, то, конечно, вы должны изменить условие и на самом деле вызвать ошибку в этом случае. – janos