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 : Sélectionner tout - Visualiser dans une fenêtre à part
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