IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Méthode de parsing pour une ligne de commande


Sujet :

Langage Java

  1. #1
    BiM
    BiM est déconnecté
    Expert confirmé
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Par défaut Méthode de parsing pour une ligne de commande
    Bonjour,

    Je dois créer une classe Java qui sera appelée par ligne de commande. Je suppose que je met l'éxécution dans ma méthode main()... ?

    Bon alors, déjà ça c'est pas mon fort, vous avez une petite démonstration svp ?
    Et la même chose avec la classe dans un Jar ?

    Et connaissez-vous une méthode de parsing pour les paramètres de la méthodes genre... "-a auteur -d date -b true" ?

    Merci d'avance !

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    alors dans l'ordre:
    Citation Envoyé par BiM Voir le message
    Bon alors, déjà ça c'est pas mon fort, vous avez une petite démonstration svp ?
    Pour créer un main ,t'en trouvera dans tous les cours de java sur le site de developpez. Un petit exemple ici http://bruce-eckel.developpez.com/li...&page=1#01.020. Pour les JARs, faut packager dans un jar avec la command "jar" et fournir un MANIFEST.MF référencant le main. Plus d'infos ici: comment créer un JAR exécutable

    Et connaissez-vous une méthode de parsing pour les paramètres de la méthodes genre... "-a auteur -d date -b true" ?
    commons CLI est une librairie java très pratique pour gérer les paramètres en ligne de commande, afficher de l'aide, traiter les erreurs. Plus d'info sur le site
    http://commons.apache.org/cli/

  3. #3
    BiM
    BiM est déconnecté
    Expert confirmé
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Par défaut
    Merci tchize_ mais c'était pas ça les deux premières questions

    Je voulais juste une confirmation pour la création d'un main(), donc oui il faut bien en faire un (après je sais l'écrire puis Eclipse est trop fort, il sait aussi ).

    Pour la deuxième question, c'était plutôt sur l'appel à ma classe qu'allait ma question. Notamment à cause des paramètres. Parce que je suppose qu'on appelle la classe avec la commande "java" qui elle a des paramètres, alors comment faire pour prendre en compte MES paramètres ?

    java mon.package.MaClasse -a auteur par exemple. Est-ce que Java différencie automatiquement que tout ce qu'il y a après java mon.package.MaClasse sont mes paramètres ?

    Et j'ai vu effectivement plusieurs librairies :
    • Commons CLI d'Apache
    • JSAP
    • args4j


    As-tu un conseil sur l'utilisation de l'une ou l'autre stp ?

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Donc oui il faut un main (faut bien que ton programme commence quelque part)

    Dans la ligne de commande, tout ce qui se trouve après le nom de ta classe est passé en paramètre à ton main, tout ce qui se trouve devant est passé en paramètre à la jvm.

    Je n'ai utilisé perso que commosn cli. Facile à utiliser, te permet des paramètres indéterminés en cas de besoin, permet de typer els paramètre, permet d'associer raccuorcis et aide à chaque parameètre, génère l'aide en fonction de ta liste de paramètres et l'affiche.

  5. #5
    BiM
    BiM est déconnecté
    Expert confirmé
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Par défaut
    Ok merci.

    Permet-il de gérer des listes (plusieurs valeurs pour un paramètre) ?
    Y-a t'il des dépendances ?

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    oui, tu peux avoir des arguments de type liste il me semble:

    Citation Envoyé par OptionBuilder
    static OptionBuilder hasArgs()
    The next Option created can have unlimited argument values.
    Non il n'y a pas de dépendances:
    http://commons.apache.org/cli/dependencies.html

  7. #7
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 704
    Par défaut
    Pour ce genre de chose personnellement je ne recours pas a des bibliothèques.

    Je sais qu'il faut pas réinventer la roue, mais là je trouve que c'est quand même faire appel à un électricien pour changer une ampoule.

  8. #8
    BiM
    BiM est déconnecté
    Expert confirmé
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Par défaut
    Ca dépend du nombre de paramètre et de la complexité de ceux-ci. Ca permet également de ne pas en oublier.

    En tout cas, merci pour tes réponses tchize_

    Pour l'instant je suis sur Args4j parce qu'il permet de mettre des @ (Annotations) et c'est pas plus mal

  9. #9
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par Uther Voir le message
    Pour ce genre de chose personnellement je ne recours pas a des bibliothèques.

    Je sais qu'il faut pas réinventer la roue, mais là je trouve que c'est quand même faire appel à un électricien pour changer une ampoule.
    Tu gagne du temps, c'est plus propre et plus confortable à utiliser, ca force toutes tes application a avoir la même manière de passer les paramètres (type unix), et ca permet de gérer les paramètre dans le désordre.

    Sur, si ton application est du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java nom.jar input output
    des librairies comme ça servent à rien. Si ton applicaiton commence plutot à avoir la tête:
    Code : 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
    usage: java -jar JmsEmailer [options]
     -broker <brokerUrl>           specify the broker connection url to
                                   connect to. eg: tcp://localhost:61616
     -config <configFile>          specify the JmsEmailer config file to use
                                   (recommander over command line
                                   configuration)
     -help                         show help
     -hibernate <file>             location of Hibernate config file (default:
                                   conf/hibernate.cfg.xml)
     -log4j <file>                 location of log4j config file (default:
                                   conf/log4j.xml)
     -patternLocation <file>       Where to find email pattern file to user?
                                   eg: ./emailPatterns.xml
     -queue <queue>                specify the queue name of broker to watch.
                                   eg: Foo.Bar
     -reconnectTimeout <seconds>   Delay to reconnect after an error in
                                   seconds (default 15 seconds) eg: 300 (wait
                                   5 minutes)
     -user <username>              specify the username to identify with
                                   broker (note: password is not allowed on
                                   commandline!)
    Des librairie qui t'évitent de mal réécrire la roue, c'est bien pratique.

  10. #10
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 704
    Par défaut
    Tu gagne du temps, c'est plus propre et plus confortable à utiliser, ca force toutes tes application a avoir la même manière de passer les paramètres (type unix), et ca permet de gérer les paramètre dans le désordre.
    C'est vrai que ca dépends des cas.

    Le gain de temps reste quand même a relativiser. L'apprentissage d'une bibliothèque n'est pas non plus immédiat, et il y a également moyen de mal les utiliser si justement on veut gagner du temps et que l'on lit la doc un peu trop en diagonale.
    Quant a lire soi même les paramètres dans le désordre, ca n'a rien de très complexe.

  11. #11
    BiM
    BiM est déconnecté
    Expert confirmé
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Par défaut
    Citation Envoyé par Uther Voir le message
    C'est vrai que ca dépends des cas.

    Le gain de temps reste quand même a relativiser. L'apprentissage d'une bibliothèque n'est pas non plus immédiat. Quant a lire il n'est pas très compliqué de gérer soi même les paramètres dans le désorde.
    Perso, je n'ai aucun mal à appréhender JSAP d'autant plus que la librairies est accompagnée d'exemples et d'une documentation. C'est pas comme si j'étais jetée aux lions

  12. #12
    BiM
    BiM est déconnecté
    Expert confirmé
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Par défaut
    Pour information, j'ai trouvé quelque chose de très intéressant à ce sujet :
    http://hikage.developpez.com/java/ar...cli-vs-args4j/

  13. #13
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par Uther Voir le message
    L'apprentissage d'une bibliothèque n'est pas non plus immédiat, et il y a également moyen de mal les utiliser si justement on veut gagner du temps et que l'on lit la doc un peu trop en diagonale.
    T'as vu la tailel de commons-cli? En 20 minutes t'as chargé la librairie et créé les paramètres dont t'avais besoin. Quand tu regarde l'exemple http://commons.apache.org/cli/usage.html à la fin de page, on peux pas dire que ce soit dur à appréhender. Et comme c'est une librairie qui intervient uniquement en début de programme, on peux pas dire non plus qu'elle pose un risque pour le reste de ton code. Maintenant c'est vrai, pour 3 options, c'est parfois plus facile de s'en passé. Perso je l'utilise à chaque fois, en deux coup de cuiller à pot, mon application et full paramètrable

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/06/2012, 14h05
  2. [OCaml] Parser une ligne de commande
    Par Thanatos dans le forum Caml
    Réponses: 4
    Dernier message: 10/12/2004, 10h11
  3. lancer une mdb a partir d'une ligne de commande
    Par dpie dans le forum Access
    Réponses: 5
    Dernier message: 30/11/2004, 15h01
  4. String Grid et choix d'une couleur pour une ligne
    Par Gigottine dans le forum C++Builder
    Réponses: 12
    Dernier message: 17/05/2002, 15h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo