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.
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.
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 ?
un petit exemple serait le bienvenue si ça ne te derange pas.
merci beaucoup.
Tu dois passer par le ClassLoader
Typiquement ça donne quelquechose comme ceci
Entourés des blocs try/catch adéquats
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[]{});
Pourquoi passer passer par un ClasslLoader? La méthode main est publique et statique.Envoyé par sinok
Ce bout de code devrait fonctionnner (sans garantie: pas testé):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 nomDeLaClasse.main
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
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 ?
Partager