Page d'accueilFindIt !Contact Cahier Java

Cahier Java

 Forum Java

Ce forum est dédié à l'ouvrage Bien programmer en Java 7, ainsi qu'aux éditions précédentes des Cahiers du Programmeur Java.
Utilisez-le pour toute demande d'information supplémentaire ou pour toute suggestion au sujet de ces ouvrages.
Pour les informations relatives au Cahier du programmeur Swing, merci d'utiliser le forum qui lui est dédié.
Vous pouvez consulter ces forums librement. Pour y participer, inscrivez-vous tout d'abord.

Sujets Messages récents Identification Inscription
Messages du sujet Execution des commandes shell en java

ghlaba

Ville : Fontainebleau
Membre depuis : 12 avr. 2005
Messages : 1
 12 avr. 2005 à 10:34
Bonjour,
j'ai un projet en java qui fait a partir d'un interface ecrit en java doit executer des commandes shell .
par exemple j'ai un interface et a l'interieur j'ai un champs de texte et un boutton , si l'utilisateur tape dans le champ le commande "ls" ou "cd" je doit executer ce commande et afficher le résultat de cette commande.
si vous pouvez m'aider a donner les class en java qui peux m'aider a executer les commandes shell
merci d'avance

Manu

Ville : Paris / France
Membre depuis : 29 avr. 2003
Messages : 394
 12 avr. 2005 à 11:09
Utilisez l'une des méthodes exec() de la classe java.lang.Runtime (voir http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Runtime.html ). Pour récupérer la sortie de la commande lancée, appelez les méthodes getOutputStream() et getErrorStream() de l'objet java.lang.Process que renvoie exec().
Par exemple :
Process proc = Runtime.getRuntime().exec("ls");
OutputStream out = proc.getOutputStream();

---
Manu (moderator/modérateur)

Krusty

Membre depuis : 11 sept. 2006
Messages : 4
 12 sept. 2006 à 18:23
Bonjour,
j'utilise la méthode exec() pour exécuter un script PERL.
Ce script PERL cherche les occurrences d'une expression régulière dans un texte et écris les occurrences trouvées dans un fichier de sortie.

Si l'expression régulière est simple : il n'y a pas de problème. En revanche si celle-ci est compliquée (longue avec plusieurs partie alternatives) : voici ce qu'il se passe :
- si j'exécute la commande depuis l'invite de commande : tout marche impécable
- si c'est java qui lance la même commande avec exec() et que je fais un waitFor() du process : le programme PERL ne se termine jamais et le programme java se bloque en attente. Il n'y a rien en sortie.
Si je ne mets pas de waitFor(), java continue son cours mais PERL n'a pas généré son fichier de sortie (même s'il aurait dû trouver des occurrences). Idem si je fais un wait de 5 minutes par exemple.

Voici un exemple d'expression régulière bloquant le programme :
((J(oseph|OSEPH)[ ]*)?K(essel|ESSEL)([ ]*J(oseph|OSEPH))?) est né en ([0-9][0-9][0-9][0-9]) en (Angleterre\. ?|Aix-en ?)?

Autre chose : si j'interrompt le programme après le lancement de la commande et avant le wait ou du close, alors seulement le fichier de sortie est gnéré et contient bien les données trouvées.

PS : inutile de me demander pourquoi je ne fais pas ma recherche d'expressions régulières avec java : c'st tout simplement parce que java n'est pas capable de gérer des expressions régulières trop complexes.

Merci d'avance pour votre aide.

Manu

Ville : Paris / France
Membre depuis : 29 avr. 2003
Messages : 394
 23 sept. 2006 à 21:25
Je ne sais pas si ça pourra vous aider mais au cours de recherches personnelles, j'ai découvert cet article :
http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html
---
Manu (moderator/modérateur)


Page d'accueilFindIt !ContactDébut de la page

© Copyrights 1997-2023 eTeks - Tous droits réservés

Cahier Java