Programme java console (CLI)
Résolu/Fermé
mikis69
Messages postés
168
Date d'inscription
mardi 26 novembre 2013
Statut
Membre
Dernière intervention
11 février 2019
-
26 févr. 2017 à 22:45
mikis69 Messages postés 168 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 11 février 2019 - 28 févr. 2017 à 23:24
mikis69 Messages postés 168 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 11 février 2019 - 28 févr. 2017 à 23:24
A voir également:
- Programme java console (CLI)
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ? ✓ - Forum Python
- Quelle console choisir - Guide
- Realtek audio console ✓ - Forum Windows
- Jeux java itel ✓ - Forum Jeux vidéo
- Frequence programme national ✓ - Forum Messagerie
1 réponse
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
26 févr. 2017 à 23:22
26 févr. 2017 à 23:22
Bonjour,
Une petite recherche sur Google remonte très vite des résultats utiles.
Sur la première page de résultats on a déjà 4 librairies qui pourraient plus ou moins correspondre à ce que tu recherches...
https://commons.apache.org/proper/commons-cli/
https://pholser.github.io/jopt-simple/
http://jcommander.org/
http://args4j.kohsuke.org/
Une petite recherche sur Google remonte très vite des résultats utiles.
Sur la première page de résultats on a déjà 4 librairies qui pourraient plus ou moins correspondre à ce que tu recherches...
https://commons.apache.org/proper/commons-cli/
https://pholser.github.io/jopt-simple/
http://jcommander.org/
http://args4j.kohsuke.org/
27 févr. 2017 à 00:13
Oui, je les ai déjà essayées mais elles ne correspondent pas à ce que je veux faire.. La plupart permettent de gérer les arguments passés lors du lancement du programme (d'après les exemples et les tests que j'ai fait).. J'ai également essayé de les modifier pour arriver à ce que je voulais mais je n'y suis pas arrivé. C'est pour cela que je suis venu demander de l'aide ici ! (J'avais évidemment déjà effectué mes recherches sur google)
Je ne sais pas vraiment quel terme recherché sur google pour ce que je veux, j'ai essayé console program like git bash par exemple (car je ne sais pas comment s'appelle ce que j'essaie de faire)
27 févr. 2017 à 07:03
public static void main( String[] args ) { // create the parser CommandLineParser parser = new DefaultParser(); try { // parse the command line arguments CommandLine line = parser.parse( options, args ); } catch( ParseException exp ) { // oops, something went wrong System.err.println( "Parsing failed. Reason: " + exp.getMessage() ); } }A priori il devrait être facile de l'adapter pour lire une commande tapée au clavier.
public static void exec(String command) { // split the command String[] args = command.split("\\s"); // create the parser CommandLineParser parser = new DefaultParser(); try { // parse the command line arguments CommandLine line = parser.parse( options, args ); } catch( ParseException exp ) { // oops, something went wrong System.err.println( "Parsing failed. Reason: " + exp.getMessage() ); } }Attention, il y a des cas particuliers où il ne faut pas splitter sur l'espace.
Par exemple lorsque l'on met des guillemets, devrait être splitté en
{"tata", "-toto", "titi tutu"}alors que monsplit("\\s")donnera{"tata", "-toto", "titi", "tutu"}, mais ce n'est pas trop dur à contourner.27 févr. 2017 à 15:15
Dans mon programme par exemple, on pourrait entrer la commande import mais après, il faudrait lui donner un type : "git" ou "local' ensuite suivant ce type, il y aurait d'autres paramètre à donner : l"url pour git, le chemin accès pour local.
Et ici avec cette librairie, je ne trouve pas le moyen de définir les options de manière précise, avec les arguments qui doivent être vérifiés etc..
Par exemple, je peux utiliser la classe Option
Option import = new Option("import", true, "Importer mais de quelle facon ?");Mais ca ne vérifiera pas ce qui suit import
27 févr. 2017 à 21:15
Exemple :
import org.apache.commons.cli.*; public class Test { public static Options buildOptions() { Options options = new Options(); options.addOption(new Option("import", true, "Importer mais de quelle facon ?")); return options; } public static CommandLine exec(Options options, String... commands) throws ParseException { return new DefaultParser().parse(options, commands); } public static void main(String... args) throws ParseException { CommandLine commandLine = exec(buildOptions(), "git", "-import", "fichier"); System.out.println(commandLine.getOptionValue("import")); // fichier } }Modifié par mikis69 le 28/02/2017 à 01:47
Maintenant pour être franc (et sans mauvaise volonté car j'ai cherché une bonne partie de la journée), je ne vois vraiment pas comment utiliser ces options.
Par exemple lorsque mon programme est lancé, je peux entrer ceci comme commande :
-git "url.git" -d ou cette commande -git "url.git"
Et je ne vois pas comment je peux dire que le -d n'est pas obligatoire et qu'en plus il ne peut être utilisé qu'avec la commande -git (car ca n'aurait pas de sens de l'utiliser avec -local par exemple). Je ne trouve rien sur le fait de lier plusieurs options entre elles.
Car avec ce que je vois pour l'instant l'utilisateur pourrait très bien faire -d tout seul aussi..
Et donc ce ne serait pas cohérent car concrétement mon programme aura quelques commandes du style : import, tokenize, help, exit (voilà les seuls commandes que l'utilisateur peut entrer).
S'il entre import, il va devoir passer des arguments à côté du style -git ou -local (+ les paramètres qui vont avec)
Mais rien n'empechera ici l'utilisateur de carrément entrer -import -git -local..
Je vais devoir vérifier les entrées de l'utilisateur dans un switch ? Car si c'est le cas, c'est pas très utile d'utiliser cette librairie, si ?
Fin je ne sais pas si je suis clair sur mes besoins.. Si ca ne l'est pas, n'hésite pas à me le dire afin que je réexplique.
Merci en tout cas !