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 :
Merci de votre aide
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 ); } }
Partager