Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Commons CLI命令行中的空选项_Java_Command Line_Apache Commons Cli - Fatal编程技术网

Java Commons CLI命令行中的空选项

Java Commons CLI命令行中的空选项,java,command-line,apache-commons-cli,Java,Command Line,Apache Commons Cli,我不明白如何在Commons CLI中将选项应用于DefaultParser 创建命令行对象时,分配的选项始终为空 下面是我如何解释Commons CLI文档的代码块: public static void main(String[] args) { Options options = new Options(); options.addOption("c", false, "why are you hidding from me"); CommandLinePa

我不明白如何在Commons CLI中将
选项
应用于
DefaultParser

创建
命令行
对象时,分配的
选项
始终为空

下面是我如何解释Commons CLI文档的代码块:

public static void main(String[] args)  {

    Options options = new Options();

    options.addOption("c", false, "why are you hidding from me");

    CommandLineParser parser = new  DefaultParser();

    System.out.println(args[0]); // this prints -c

    try {

        CommandLine line = parser.parse(options, args);

        System.out.println(line.getArgs()[0]); // prints -c

        Option[] o = line.getOptions(); // this is empty for some reason

        System.out.println(o.length); // prints 0

        if (line.hasOption("c")) { // false

            System.out.println(" flag c found");
        }
    }

    catch(ParseException e ) {
        e.printStackTrace();
    }

为什么
line.getOptions()
为空,以及如何正确应用选项

我只是想重现你的问题,但一切对我来说都很好。 我创建了一个简单的maven项目,其中只包含
commons cli:commons cli:1.3.1
依赖项和
Test
主类,方法与您在问题中提供的方法完全相同

当我从Windows命令行编译并运行main方法时,例如,使用:

java -cp .;[path_to_commons_cli_jar]/commons-cli-1.3.1.jar Test -c
然后它给了我预期的输出:

  • args
    由单个
    “-c”
    值组成
  • line.getArgs()
    返回一个空数组
  • line.getOptions()
    返回一个由预期的
    选项
    对象组成的单条目数组

在eclipse中启动程序时,您使用的命令行中可能还有一些剩余的空间没有被剥离?否则,您的代码应该可以正常工作…

您传递给程序的命令行是什么?-c。我基本上打开了eclipse的运行配置,并将-c传递给参数列表。我仍然认为问题不存在,因为line.getArgs()不是空的。乍一看,我看不出您所做的有任何错误。您使用的是哪一版本的commons cli?@dosyfier感谢您的回复,版本是commons-cli-1.3.1