2010-09-09 5 views
1

Dans une application actuelle, les paramètres de ligne de commande entrants sont analysés sur plusieurs "niveaux". Au niveau le plus élevé, je souhaite seulement analyser certaines options et laisser le reste à "niveaux inférieurs". Cependant, toutes les librairies que j'ai essayées jusqu'ici (Cli commun, args4j, JOpt, gnu.jargs) lancent une exception "option inconnue" quand j'essaie de les nourrir, eh bien, des options inconnues.Ignorer les arguments de ligne de commande inconnus

Je ne veux vraiment pas écrire une autre classe d'analyse de ligne de commande. Existe-t-il une bibliothèque/classe qui analyse ces options et ignore les options inconnues?

Merci

+0

Pouvez-vous poster exemple, comment avez-vous essayé de le faire? –

Répondre

1

jopt vous permet de spécifier une valeur par défaut. Aucune exception n'est levée

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

Assurez-vous qu'il existe une meilleure solution.

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]); 
}; 

Et l'utiliser:

CmdLineParser parser = new CmdLineParser(CustomArgsObject); 
      stripUnusedArgs.apply(args,parser); 
Questions connexes