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

Java Discussion :

executer un .class en plein milieu de mon .class principal


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Responsable de projet
    Inscrit en
    Décembre 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable de projet

    Informations forums :
    Inscription : Décembre 2005
    Messages : 97
    Par défaut executer un .class en plein milieu de mon .class principal
    bonjour, je voudrai savoir si il est possible d'executer un .class sans faire d'apelle system, la meme façon que l'on execute une methode ?

    merci de vos reponse.

  2. #2
    Membre expérimenté
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Par défaut
    Oui, il suffit d'appeler la méthode main de cette classe, comme n'importe quelle autre méthode statique.

    Cela répond à ta question ?

  3. #3
    Membre confirmé
    Profil pro
    Responsable de projet
    Inscrit en
    Décembre 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable de projet

    Informations forums :
    Inscription : Décembre 2005
    Messages : 97
    Par défaut
    un petit exemple serait le bienvenue si ça ne te derange pas.
    merci beaucoup.

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Tu dois passer par le ClassLoader

    Typiquement ça donne quelquechose comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Class c=Class.forName("nomDeLaClasse");
    Constructor[] main=c.getConstructors();
    main[0].newInstance(new Class[]{});
    Entourés des blocs try/catch adéquats

  5. #5
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Citation Envoyé par sinok
    Tu dois passer par le ClassLoader

    Typiquement ça donne quelquechose comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Class c=Class.forName("nomDeLaClasse");
    Constructor[] main=c.getConstructors();
    main[0].newInstance(new Class[]{});
    Entourés des blocs try/catch adéquats
    Pourquoi passer passer par un ClasslLoader? La méthode main est publique et statique.
    Ce bout de code devrait fonctionnner (sans garantie: pas testé):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nomDeLaClasse.main

  6. #6
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    tout dépend de si on connait le nom de la classe ou pas, si celui ci n'est pas connu au nmoment ou on tappe le code, on est bien obligé de passer par le classloader

  7. #7
    Membre expérimenté
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Par défaut
    En effet, si le nom de la classe est déterminé lors de l'exécution du programme, il faut utiliser l'introspection pour la lancer.
    Mais si le seul but est de lancer la méthode main, il n'y a pas besoin de l'instancier car la méthod main est statique.

    Sinon, la solution de jowo marche très bien. Je l'ai déjà testée pour lancer le moteur d'une appli en ligne de commande depuis une interface graphique, c'est très pratique.
    En argument de ta fonction main, tu donnes un tableau de chaine de caractères, ces chaines correpondant aux options que tu aurais passé en ligne de commande.

    C'est plus clair ?

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

Discussions similaires

  1. [Conception] le traitement php s'arrête en plein milieu.
    Par renaudjuif dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/06/2007, 21h17
  2. Une figure en plein milieu d'un théorème !
    Par casier dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 2
    Dernier message: 03/05/2007, 12h34
  3. Code "static" en plein milieu d'une class
    Par sozie9372 dans le forum Langage
    Réponses: 4
    Dernier message: 28/07/2006, 14h08
  4. [MySQL] script qui s'arrête en plein milieu
    Par drommk dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 22/06/2006, 16h35
  5. execution d'un prog avec des fichiers multi-class
    Par Ice-B dans le forum Général Java
    Réponses: 2
    Dernier message: 05/08/2004, 11h43

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