Ouvrir un fichier externe (Runtime, exec..) [Résolu]

olkis 19 Messages postés jeudi 27 octobre 2005Date d'inscription 25 janvier 2006 Dernière intervention - 13 nov. 2005 à 21:58 - Dernière réponse : olkis 19 Messages postés jeudi 27 octobre 2005Date d'inscription 25 janvier 2006 Dernière intervention
- 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);

}

}

}

);
Afficher la suite 

6 réponses

Répondre au sujet
olkis 19 Messages postés jeudi 27 octobre 2005Date d'inscription 25 janvier 2006 Dernière intervention - 14 nov. 2005 à 01:48
+3
Utile
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 !
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de olkis
jcodeunpeu 368 Messages postés mercredi 9 novembre 2005Date d'inscription 2 décembre 2006 Dernière intervention - 13 nov. 2005 à 22:33
0
Utile
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.
Commenter la réponse de jcodeunpeu
olkis 19 Messages postés jeudi 27 octobre 2005Date d'inscription 25 janvier 2006 Dernière intervention - 13 nov. 2005 à 23:29
0
Utile
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
Commenter la réponse de olkis
jcodeunpeu 368 Messages postés mercredi 9 novembre 2005Date d'inscription 2 décembre 2006 Dernière intervention - 14 nov. 2005 à 01:34
0
Utile
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+.
Commenter la réponse de jcodeunpeu
jcodeunpeu 368 Messages postés mercredi 9 novembre 2005Date d'inscription 2 décembre 2006 Dernière intervention - 14 nov. 2005 à 03:39
0
Utile
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+.
Commenter la réponse de jcodeunpeu
olkis 19 Messages postés jeudi 27 octobre 2005Date d'inscription 25 janvier 2006 Dernière intervention - 14 nov. 2005 à 11:50
0
Utile
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 !
Commenter la réponse de olkis

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.