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

avec Java Discussion :

Plusieurs "main" dans mon programme


Sujet :

avec Java

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Corée

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2008
    Messages : 253
    Points : 122
    Points
    122
    Par défaut Plusieurs "main" dans mon programme
    Pour un projet java, on me demande que l'on puisse l'appeler de différentes façons, chaque façon va appeler un déroulement différent du programme.

    > fonctionMachin param1 param2

    > bidule param1 param2 param3

    > ...

    Étant donné que tout ça utilise la même structure, je ne vais pas faire plusieurs projets différents.

    Mais je cherche à savoir comment faire ça, faut-il créer plusieurs main ? Si oui, comment leur donner un nom précis autre que main ?

  2. #2
    Membre habitué Avatar de sewatech
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Points : 166
    Points
    166
    Par défaut
    Le nom de la méthode main est imposé, tu ne peux pas la changer. Par contre, tu peux créer plusieurs classes qui contiennent chacune un main et appeler explicitement les classes.

    La solution la plus propre me semble être le passage d'un premier argument qui indique la commande à réaliser : une seule classe, avec un seul main, et du code (qui peut être relativement générique, avec un peu d'API de reflection) qui oriente le traiement.

    Alexis

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Corée

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2008
    Messages : 253
    Points : 122
    Points
    122
    Par défaut
    J'ai bien pensé à faire ça, mais il faut bien une commande pour appeler le programme avant de mettre des arguments.

    C'est pour un projet qui va être testé par un logiciel donc pas moyen d'outrepasser cette règle.

    En gros il faut que je puisse appeler mon programme avec plusieurs noms différents, et selon le nom, je fais des étapes de traitement différentes.

  4. #4
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 283
    Points : 380
    Points
    380
    Par défaut
    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class MonProgramme {
     
    public static void main(String[] args) {
        if ("TrucMuche".equals(args[0])) { /* Faire mon trucmuche */ }
        else if ("Machin".equals(args[0])) { /* Faire mon machin */ }
        else if ("Bidule".equals(args[0])) { /* Faire mon bidule */ }
        else if ("Quelquechose".equals(args[0])) { /* Faire mon quelquechose */ }
    }
     
    }
    et pour appeler :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java MonProgramme TrucMuche truc1 truc2 truc3

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Corée

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2008
    Messages : 253
    Points : 122
    Points
    122
    Par défaut
    vi, mais comme je dis, il faudrai que ça soit appellé par :
    java TrucMuche directement, au lieu de MonProgramme TrucMuche

  6. #6
    Expert éminent sénior
    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 : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    et bien, dans ce cas, une classe par "action" possible, chacune ayant un main:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    java org.moi.MonTruc param1 param2
    java org.moi.Machin param1 param2
    Rien n'empeche, derrière, que chaque classe (MonTruc, Machin, ....) fasse appel à une seule est même classe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    package org.moi;
    public class MonTruc extends MonProgramme{
    public static void main(String[] argv) {
        new MonTruc().executer("truc", argv);
    }
    }
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    package org.moi;
    public class MonProgramme {
      public void executer(String fonction, String[] parametres) {
        //...
      }
    }

  7. #7
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Novembre 2006
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2006
    Messages : 503
    Points : 1 332
    Points
    1 332
    Par défaut
    ... on ne peux pas donner une réponse à cette question! Il faudrait donner plus d'information.

    Il est clair qu'une classe Java ne peux contenir qu'une seule entrée main() et que celle-ci peux contenir éventuellement des paramètres. Même chose pour un jar (avec ou sans manifest) qui peut contenir plusieurs classes ou plusieurs main().

    On peut aussi utiliser le -D et une propriété, une variable système ou encore un fichier.

    Peut-être que la réponse est simplement d'écrire un script .bat (Windows) ou .sh (Linux), voir un exécutable écrit en C, C++, C#, qui va transformer un "exécute monMachin" en "java MesProjets monMachin" ou encore déposer le paramètre dans un fichier qui sera lu par le programme Java.

  8. #8
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 283
    Points : 380
    Points
    380
    Par défaut
    C'est vachement compliqué tout ça !

    Dans tous les cas, si tu ne dis pas à la machine ce qu'il doit faire et où il doit aller, il ne le fera jamais !

Discussions similaires

  1. [Débutant] Console, plusieurs problèmes dans mon programme
    Par Maaarion.m dans le forum C#
    Réponses: 3
    Dernier message: 17/02/2012, 19h24
  2. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59
  3. [] Utiliser AVI d'une DLL dans mon programme
    Par seb.49 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 02/05/2003, 14h52

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