我目前正在使用库Apache Commons CLI 1.3.1
来解析命令行参数并控制可执行jar中的执行流程。到目前为止,一切都非常简单,documentation和example usage页面相对透彻且有用。
但是,我仍然不清楚如何使用此库来检测是否缺少任何参数或选项。我想检测这种情况,然后打印一个用法/帮助声明。我通过简单地检查参数数组的长度来解决这个问题,但我想知道库是否有办法检测这种情况而不检查是否存在每个选项。
这是我的代码,其中包含左侧的解决方法:
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();
}
}
答案 0 :(得分:2)
我认为您正在寻找getArgList
或getArgs
方法。来自文档:
检索任何遗留的未识别选项和参数
所以不要这样:
if (args.length <= 0 || cmd.hasOption("help"))
像这样使用:
if (cmd.getArgs().length == 0 || cmd.hasOption("help"))
答案 1 :(得分:2)
请注意,cmd.getArgs()。length不计算命令行中的开关(-xxxx) - 只有args不以dash开头