cs_Stubbornman
Messages postés80Date d'inscriptionlundi 18 février 2002StatutMembreDernière intervention12 janvier 2007
-
15 nov. 2006 à 22:32
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023
-
18 nov. 2006 à 10:03
Bonsoir,
Je cherche s'il est possible dans une application écrite en Java de lancer une autre application dont on n'a que l'executable.
Je m'explique:
J'écris un prog en Java, et je veux qu'il lance à un moment ou un autre une autre application (par toto.exe).
Est-ce possible ? Et si oui, comment fait-on ca?
J'ai cherche sur ce site et sur internet, mais j'ai rien trouve de concluant...
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 15 nov. 2006 à 23:30
Salut,
oui cherche du coté de java.lang.Runtime, et la prochaine fois merci de vraiment chercher avant de poster vu que c'est quand meme une question qui revient ennormement sur le forum...
cs_Stubbornman
Messages postés80Date d'inscriptionlundi 18 février 2002StatutMembreDernière intervention12 janvier 2007 17 nov. 2006 à 10:14
"et la prochaine fois merci de vraiment chercher"
Je me demande par quel miracle tu peux te permettre de faire cette remarque à tout le monde... Il n'y a pas un poste auquel tu as repondu ou tu te permet de mettre la parole des gens en doute, et ca me tape sur les nerfs d'autant que si tu lisais un peu mieux mon poste tu constaterais que j'ai ecris:
" J'ai cherche sur ce site et sur internet, mais j'ai rien trouve de concluant..."
Donc je te demanderais de tempérer un peu plus tes réponses.
Pour en revenir à ma question, je sais effectivement que c'est possible avec Runtime. Cependant j'ai constaté (après plusieurs heures de recherche, ose mettre ma parole en doute) que ca ne permet pas de lancer toutes les applications. La preuve en est que j'ai reussi à lancer une application (NetMeeting par exemple), mais pas une autre (la mienne) et je n'arrive pas à savoir ce qui peut bien les differencier...
Aussi je reformule la question: y'a-t-il un autre moyen qui permettrais de lancer toutes les applications ?
A moins que vous ayez une idee de la raison pour laquelle une application ne peut pas etre lancee de la sorte...
Merci de votre aide
PS: Désolé de mon emportement Twinuts, je comprends que ca puisse t'énerver que les gens préférent demander que chercher mais j'ai horreur qu'on mette ma parole en doute.... surtout quand ca n'est pas justifié.
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 17 nov. 2006 à 11:10
Salut,
tu la lance comment ton application (quelle méthode exec) ? il y a des arguments ?
"mais pas une autre (la mienne)" <-- c'est une appli java ou autre ?
ton appli a besoin de fichiers qui se trouves dans son répertoire ?
tu as essayé de lire les flux stdout et stderr(de la classe Process) de ton application ?
bref détails plus le sujet stp.
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
cs_Stubbornman
Messages postés80Date d'inscriptionlundi 18 février 2002StatutMembreDernière intervention12 janvier 2007 18 nov. 2006 à 09:45
Salut,
J'utilise la méthode exec simple à laquelle je ne passe que le chemin d'accès à l'appli (par ex: C:\MonDir\MonAppli.exe).
L'application ne necessite pas d'arguments, je ne lui en fournit donc pas. Enfin, c'est une aplli dont je n'ai que l'executable, je ne connais pas ses origines ^^. Je ne sais donc pas en quoi elle est ecrite.
A priori l'appli a besoin de fichier qui sont dans son repertoire, mais dans la mesure ou je fournit le chemin d'acces, est-ce qu'elle ne devrait pas retrouver ses petits ?
Enfin, je ne suis pas sur de lire les flux stdouit et stderr correctement, mais la ca vient de mes competences. Je dois pas bien m'y prendre. A priori le stderr retourne -1.
Merci de ton aide.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 18 nov. 2006 à 09:52
Salut,
justement non qu tu mettes le chemin complet ou non l'appli preserve ton root dir donc elle n'aura pas les fichiers dont elle a besoin, contrairement à netmeeting qui lui est dans le path system.
utilise cette méthode pour executer ton application :
Process p = Runtime.getRuntime().exec(cmd, null, new File("repertoire de l'application"));
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
Process process = Runtime.getRuntime().exec(....);
tdOut = process.getInputStream();
stdErr = process.getErrorStream();
stdIn = process.getOutputStream();
//pour ecrire
stdIn.write(str.getBytes(), 0, str.length());
stdIn.flush();
//pour lire (avec le jdk 1.5)
Scanner s = null;
String nl = System.getProperty("line.separator");
s = new Scanner(stdErr);//tu mets sdtOut à la place si tu veux le lire
String ret = "";
while (s.hasNext())
ret += s.nextLine() + nl;
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."