跳过未知的命令行参数

时间:2010-09-09 13:46:09

标签: java command-line command-line-arguments

在我当前的应用程序中,传入的命令行参数在几个“级别”上进行解析。

在最高级别,我只想解析一些选项并将其余选项留给“较低级别”。但是,到目前为止我尝试过的所有库(Common Cli,args4j,JOpt,gnu.jargs)都会在我尝试提供它们时抛出“未知选项”异常,嗯,未知选项。

我真的不想编写另一个命令行解析类。是否有一个库/类可以解析这些选项并跳过未知选项?

谢谢

3 个答案:

答案 0 :(得分:1)

jopt允许您指定默认值。没有例外被抛出

parser.accepts("count").withOptionalArg().ofType(Integer.class).defaultsTo(-1);

答案 1 :(得分:0)

确保有更好的解决方案。

foo_%.cpp

并使用它:

public static BiFunction<String[],CmdLineParser,String[]> stripUnusedArgs=(args,parser)->{

    List<String> accepteds=parser.getOptions().stream().map(opt->opt.option.toString()).collect(Collectors.toList());
    List<String> stripedArgs=new ArrayList<>();
    for(int i=0; i< args.length;i++){
        if(accepteds.contains(args[i])){
            stripedArgs.add(args[i]);
            stripedArgs.add(args[i+1]);
        }
    }
    return stripedArgs.toArray(new String[0]);
};

答案 2 :(得分:0)

对于Args4j,我认为SubCommandHandler可能就足够了。 https://args4j.kohsuke.org/apidocs/org/kohsuke/args4j/spi/SubCommandHandler.html