在我当前的应用程序中,传入的命令行参数在几个“级别”上进行解析。
在最高级别,我只想解析一些选项并将其余选项留给“较低级别”。但是,到目前为止我尝试过的所有库(Common Cli,args4j,JOpt,gnu.jargs)都会在我尝试提供它们时抛出“未知选项”异常,嗯,未知选项。
我真的不想编写另一个命令行解析类。是否有一个库/类可以解析这些选项并跳过未知选项?
谢谢
答案 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