Compilation et execution à la volée

auvrayju Messages postés 11 Date d'inscription mardi 14 mars 2006 Statut Membre Dernière intervention 11 juin 2006 - 18 avril 2006 à 08:56
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 18 avril 2006 à 16:10
Bonjour,

Dans mon programme, je genere un fichier "FichierMain.java".
J'aurais besoin de le compiler et de l'executer à l'interieur même de mon programme.
Pour cela j'utilise la classe Runtime

Runtime.getRuntime().exec("cmd /c java FichierMain.java"); ( à l'interieur d'un try)

et ca ne marche pas!! pouvez vous ma'aider pour la compilation et l'execution?

Merci beaucoup

7 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
18 avril 2006 à 09:31
Salut





je pense que c'est une faute de frappe mais on utilise pas java pour compiler mais plus javac :D

WORA
0
auvrayju Messages postés 11 Date d'inscription mardi 14 mars 2006 Statut Membre Dernière intervention 11 juin 2006
18 avril 2006 à 09:35
Oui c'était une erreur de frappe de ma part, mais dans mon programme j'ai bien mis javac!!!
et ca ne marche toujours pas!!

Merci quand même!!

Ju
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
18 avril 2006 à 10:07
Oki,



bon n'ayant pas une grande connaissance de win surtt de cmd /c tu vas faire 2 test pour voir



1 - Runtime.getRuntime().exec("compile.bat");

compile.bat

@echo off

javac FichierMain.java

pause



2 - Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL javac FichierMain.java");



apres il serait bien de verifier les arguments possible de passer à javac comme le sourcepath et classpath

WORA
0
auvrayju Messages postés 11 Date d'inscription mardi 14 mars 2006 Statut Membre Dernière intervention 11 juin 2006
18 avril 2006 à 11:03
Merci WORA!!

ça marche maintenant pour la compilation!!

En revanche pour l'execution, j'ai toujours un problème.
Dans le même compile.bat
j'ai ajouté
java FichierMain

et il ne m'affiche rien
Il est censé m'afficher après execution un simple "c'est OK" avec un System.out.println(), mais je n'ai rien dans mon terminal (J'utilise Eclipse)

Dois je faire une importation du .class dans mon projet?
J'ai entendu parler de ClassLoader, c'est bien cela?

En tout cas merci pour ta disponibilité!!!
julien
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
18 avril 2006 à 11:09
Pour l'execution un simple Runtime.getRuntime().exec("java FichierMain"); devrait suffir




WORA
0
auvrayju Messages postés 11 Date d'inscription mardi 14 mars 2006 Statut Membre Dernière intervention 11 juin 2006
18 avril 2006 à 14:41
salut!!

Ca ne marche toujours pas!!

voici mon programme


public void test()


{


String str;





try{


Runtime.getRuntime().exec("cmd /c javac Test_fm5.java");


Process p = Runtime.getRuntime().exec("cmd /c java -classpath Test_fm5");


BufferedReader in=new BufferedReader(new InputStreamReader(p.getInputStream()));


BufferedReader err=new BufferedReader(new InputStreamReader(p.getErrorStream()));





while ((str = in.readLine())!=null)


{


System.out.println(str);


}


while ((str = err.readLine())!=null)


{


System.out.println(str);


}





}


catch (IOException e)


{


System.out.println(e.toString());


}


}





le fichier que je cherche à executer





public class Test_fm5 {





public static void main(String args[])


{


System.out.println("l'execution a réussie");








}





}





J'ai l'erreur

java.lang.NoClassDefFoundError (avec le
ErrorStream)

Je me suis baladé sur plusieurs forums et tout le monde parlait de classpath. Mais je ne comprenais pas grand chose.
Voici le mien

Mon classpath






















Là je ne sais plus quoi faire!! La compilation semble fonctioné.... mais pas l'execution
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
18 avril 2006 à 16:10
Je t'ai fais un petit exemple super simple et bateau(je n'ai pas testé la partie win donc....)





voici la classe a compiler



import javax.swing.JOptionPane;





public class Test {



public static void main(String [] args){

String msg = "<html>Petit test avec arguments :
";

for(String s : args)

msg += "<li>" + s + "</li>";

msg += "</html>";


JOptionPane.showMessageDialog(null, msg, "Test",
JOptionPane.INFORMATION_MESSAGE);

}

}





maintenant la classe qui lance l'appli (je ne traite pas la compilation vu que ca marche chez toi



import java.io.IOException;







public class Java {



private Runtime runtime = Runtime.getRuntime();



public static void main(String [] args){

Java java = new Java();

java.run("Test arg1 arg2 arg3 arg4 arg5", "bin");

}





public void run(String javaClass, String classDir){

try {

String cmd = "";

if(isWindaubeOS())


cmd = "start java -cp " + classDir + " " + javaClass;

else

cmd = "java -cp " + classDir + " " + javaClass;

runtime.exec(cmd);

} catch (IOException e) {

e.printStackTrace();

}

}



public boolean isWindaubeOS(){

return System.getProperty("os.name").startsWith("Win");

}



}




WORA
0
Rejoignez-nous