Bonjour,
J'utilise Args4j pour parser les paramètres en entrée de mon application.
Cependant, j'ai un petit soucis.
En gros, j'ai un seul point d'entrée pour deux actions différentes puisque mes classes Java sont mises dans un seul JAR (ça m'est imposé).
Donc, avant je pouvais faire :
Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 java mon.package.MonActionA -a param1 -b -c 123 java mon.package.MonActionB -c bqsf -d -f
Maintenant, je devrais faire quelquechose comme ceci :
Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 java -jar mon-jar.jar --ActionA -a param1 -b -c 123 java -jar mon-jar.jar --ActionB -c bqsf -d -f
En fait, ce que je voudrais faire est assez simple :
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 import java.util.ArrayList; import java.util.List; import org.kohsuke.args4j.Argument; import org.kohsuke.args4j.CmdLineException; import org.kohsuke.args4j.CmdLineParser; import org.kohsuke.args4j.ExampleMode; import org.kohsuke.args4j.Option; import org.kohsuke.args4j.spi.BooleanOptionHandler; /** * * @author BiM * */ public class ActionChoice { private CmdLineParser parser; @Option(name="--ActionA", required=false, handler=BooleanOptionHandler.class,) private Boolean actionA = Boolean.FALSE; @Option(name="--ActionB", required=false, handler=BooleanOptionHandler.class) private Boolean actionB = Boolean.FALSE; @Argument private List<String> arguments = new ArrayList<String>(); /** * @param args */ public static void main(String[] args) { new ActionChoice(args); } private ActionChoice(String[] args) { parser = new CmdLineParser(this); try { parser.parseArgument(args); choice(arguments); } catch (CmdLineException e) { System.err.println(e.getMessage()); System.err.println("java -jar mon-jar.jar [options...] arguments..."); parser.printUsage(System.err); System.err.println(); System.err.println("Exemple : java -jar mon-jar.jar"+parser.printExample(ExampleMode.ALL)); } } private void choice(List<String> arguments) throws CmdLineException { if (create.equals(send)) { throw new CmdLineException(parser, "Un seul des deux paramètres doit être initialisé"); if (actionA) new ActionA(arguments); else new ActionB(arguments); } } }
En gros, cela revient à dire : je parse mes premiers paramètres et je les mets dans les options actionA et/ou actionB puis je met le reste dans les arguments que je passe à mon Action A ou B qui elle même parse ces arguments.
Mais j'ai cette erreur :
Comment lui faire comprendre que les options en trop sont à mettre dans arguments ?"-a" is not a valid option
Merci d'avance !
Partager