Problème dans execution de processus
Bonjour,
Je créé une application qui génére du code java à partir de code XML. Je voudrais mettre dans mon menu une option "compiler et executer" qui dès que l'utilisateur choisi celui ci, l'application compile et excute le code java venant d'être généré.
J'ai utilisé les processus dans cet ordre:
- cd cheminDuRepertoire (ou se trouve le code java)
- javac nomFichier.java
- java Lanceur (car le main se trouve toujorus dans cette classe)
Le chemin du repertoire peux changer tout le temps. Quand j'essais d'excuter mon code, il met une IOExecption pour la commande "cd". J'ai utilisé un processus différent à chaque fois. Est ce que quelqu'un aurai une idée de ce qui provoque cette exception (sachant que le chemin donné est correct et existe). Il faudrait que cette fonction marche sur Window, Unix, et MAC
Voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
// listener for "Compiler et executer" in the menu "Outils"
class ListenerCompile implements ActionListener {
public void actionPerformed( ActionEvent e ) {
String error = "";
String nameFile = "";
String chemin = "";
if( writePanel.getPathFileJava().equals( "" ) ) {
errorPanel.fctPrintError( "Erreur: Vous devez deja generer un fichier java" );
return;
}
try {
int index = writePanel.getPathFileJava().lastIndexOf( "/" );
chemin = writePanel.getPathFileJava().substring(0, index + 1 );
System.out.println( chemin );
nameFile = writePanel.getPathFileJava().substring(index + 1, writePanel.getPathFileJava().length() );
System.out.println( nameFile );
//Allez dans le repertoire
Process proc = Runtime.getRuntime().exec( "cd " + chemin );
try {
//lancement de la compilation
Process proc1 = Runtime.getRuntime().exec( "javac " + nameFile );
//pour recuperer le message
InputStream is_Error = proc1.getErrorStream();
index = is_Error.read();
if( index == -1 ) {
error = "Le fichier java est compile" + newline;
//execution
try {
//lancement de la compilation
Process proc2 = Runtime.getRuntime().exec("java Lanceur" );
//pour recuperer le message
is_Error= proc2.getErrorStream();
index = is_Error.read();
if( index == -1 ) {
error += "Le fichier java est execute";
}
else {
error = "Erreur a l'execution: ";
while( index != -1 ) {
error += (char)index;
index = is_Error.read();
}
}
}
catch( IOException IOe ) {
error = "Erreur: Impossible d'executer le fichier java";
}
}
else {
error = "Erreur a la compilation: ";
while( index != -1 ) {
error += (char)index;
index = is_Error.read();
}
}
}
catch( IOException IOe ) {
error = "Erreur: Impossible de compiler le fichier java";
}
}
catch( IOException IOe ) {
error = "Erreur: Impossible d'accÈder au fichier";
}
errorPanel.fctPrintError( error );
}
} |
Merci de votre aide