java commons cli解析器无法识别命令行参数

bybem2ql  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(427)

这应该是非常简单,但我不知道为什么它不工作。我正在尝试使用apachecommons cli库传递带有名称的参数(这样我就可以按任何顺序传递参数),但它似乎不起作用。我想传递eclipseide的参数。我知道这部分不是问题所在,因为我可以打印args[0]类型的参数。

import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;

public class MainClass {

public static void main(String[] args) throws ParseException {
    System.out.println(args[0]);
    Options options = new Options();
    options.addOption("d", false, "add two numbers");
    CommandLineParser parser = new DefaultParser();
    CommandLine cmd = parser.parse( options, args);
    if(cmd.hasOption("d")) {
        System.out.println("found d");
    } else {
        System.out.println("Not found");
    }
}

上面的行是完全一样的例子给出了网上,但我不知道为什么它不工作。我从一天开始就在挣扎。请帮我把哪里弄错了。

ncecgwcz

ncecgwcz1#

根据示例,参数的名称应该出现在命令行中
无价值的财产

Usage: ls [OPTION]... [FILE]...
-a, --all                  do not hide entries starting with .

相应的代码是:

// create the command line parser
CommandLineParser parser = new DefaultParser();

// create the Options
Options options = new Options();
options.addOption( "a", "all", false, "do not hide entries starting with ." );

在这种情况下,正确的调用是: ls -a 或者 ls --all 用空格分隔值

-logfile <file>        use given file for log

相应代码为:

Option logfile   = OptionBuilder.withArgName( "file" )
                                .hasArg()
                                .withDescription(  "use given file for log" )
                                .create( "logfile" );

电话是:

app -logfile name.of.file.txt

值之间用等号分隔

-D<property>=<value>   use value for given property

代码是:

Option property  = OptionBuilder.withArgName( "property=value" )
                                .hasArgs(2)
                                .withValueSeparator()
                                .withDescription( "use value for given property" )
                                .create( "D" );

电话是:

app -Dmyprop=myvalue

相关问题