Ouvrir un fichier externe (Runtime, exec..)

Résolu
olkis Messages postés 19 Date d'inscription jeudi 27 octobre 2005 Statut Membre Dernière intervention 25 janvier 2006 - 13 nov. 2005 à 21:58
olkis Messages postés 19 Date d'inscription jeudi 27 octobre 2005 Statut Membre Dernière intervention 25 janvier 2006 - 14 nov. 2005 à 11:50
Bonjour à tous



j'essaie d'ouvrir un fichier externe avec le code suivant, mais le
programme sort le catch directement... je comprends pas !! pourtant le
fichier se trouve bien dans C.. j'ai voulu voir si c'était un problème
de la casse, mais non.. vous avez une idée ??



edit_src.addActionListener (new ActionListener()

{

public void actionPerformed(ActionEvent ae)

{

try

{

Runtime r = Runtime.getRuntime();

r.exec("c:\\xxxx.java");

}

catch (IOException err)

{



message.showMessageDialog(null,"Impossible d'ouvrir le
source","Erreur",JOptionPane.ERROR_MESSAGE);

}

}

}

);

6 réponses

olkis Messages postés 19 Date d'inscription jeudi 27 octobre 2005 Statut Membre Dernière intervention 25 janvier 2006
14 nov. 2005 à 01:48
si en fait, ça marche en inversant les arguments :



r.exec("notepad.exe source.txt");

ou

r.exec("C:\\WINDOWS\\notepad.exe source.txt");



mais vu que notepad.exe dans la variable d'environnement de Windows,
pas besoin de donner le chemin d'accès.. le seul soucis maintenant.. si
on travaille sur Linux.. ça va planter.. je cherche donc à savoir
comment faire pour charger le programme par défaut.. notamment en
utilisant la commande ASSOC sous cmd de Windows qui permet de te donner
le type de fichier pour lequel on travaille. Il ne suffira plus qu'à
faire le lien avec ce type et le programme qui lui ait référé... non ?
lol



essaie donc ASSOC .txt sous un shell tu comprendras de koi je parle !
3
jcodeunpeu Messages postés 365 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 2 décembre 2006 2
13 nov. 2005 à 22:33
bonsoir,
essaie de capturer les autres exceptions levées par .exec, y'aura peut-être la réponse.
SecurityException
IOException - if an I/O error occurs
NullPointerException - if command is null
IllegalArgumentException - if command is empty

ps : désolé, je n'ai pas encore utilisé la classe Runtime.
0
olkis Messages postés 19 Date d'inscription jeudi 27 octobre 2005 Statut Membre Dernière intervention 25 janvier 2006
13 nov. 2005 à 23:29
j'utilise Eclipse.. il me dit tout le tps s'il manque des exceptions indispensables, donc je ne pense pas que ce soit le pb..



pour autant, le r.exec("xxxx") je pense avoir compris qu'il
lance la commande xxxx dans le shell.. donc j'ai essayé
r.exec("source.txt C:\\WINDOWS\\notepad.exe"); mais ça ne marche tjs
pas.. pourtant si je fais r.exec("java MonProgramme"); il me lance le
programme.. serait un problème du CLASSPATH ???

j'essaie de voir ça
0
jcodeunpeu Messages postés 365 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 2 décembre 2006 2
14 nov. 2005 à 01:34
re, olkis
ben c'est bon alors, 'java MonProg' c'est une commande valide ...
j'ai jeté un coup d'oeil dans l'api est la méthode .exec(String commande)
décompose la chaîne pour reconstituer la commande et exécuter ...
r.exec("java MonProgramme"); tu veux bien dire que tu passe comme seul argument
une chaîne représentant la commande ?
moi aussi je suis sur eclipse, et je crois bien que certaines exception sont trés difficilement capturables parfois, au point qu'il ne les mentionne pas toujours, ex: OptionalDataException, bonjour celle-la.
mais ce genre de truc <r.exec("source.txt C:\\WINDOWS\\notepad.exe");> c'est clair que ça le fera pas -> @see API.
ciao A+.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jcodeunpeu Messages postés 365 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 2 décembre 2006 2
14 nov. 2005 à 03:39
ah ben ouais, super !!
mais alors la chaîne "notepad.exe source.txt", c'est un peu comme java source
où source est un fichier dans le répertoire courant, mais ton source.txt est aussi dans le courant ?
ensuite moi je ferai des blocs conditionnels genre :
if(this.file.getExtension().endsWith("txt")){
r.exec("notepad.exe " + this.file);
}else{...}
mais il y a sûrement une méthode java qui renvoie l'application à invoquer.
quand je fais : Runtime.getRuntime().exec("cmd.exe assoc .bat") je sais que javaw.exe accède bien win32\\CMD.exe mais pourquoi aucune exception et aucune console n'apparait même si je fais suivre .Bat de 'pause' ???
bref si t'as trouvé notify parce que là je wait. c'est dommage que tout ces petits trucs on sache pas où regarder pour les trouver hein ?
A+.
0
olkis Messages postés 19 Date d'inscription jeudi 27 octobre 2005 Statut Membre Dernière intervention 25 janvier 2006
14 nov. 2005 à 11:50
effectivement, c'est bizarre.. peut-etre (c'est un gros peut-etre !) que c'est parce que tu as déjà une fenetre dos d'ouverte (dans tu execute ton programme), et que cette fenetre ne peut se mettre à jour tant que tu n'a pas fermé ton programme. Et le progammme chercher peut-etre à éxécuter ton assoc.bat dans cette même fenetre... mais finalement c'est pas logique donc bon là je cale !
0
Rejoignez-nous