Compiler un programme java depuis un programme Java

IndyGroumpf Messages postés 2 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2006 - 29 mai 2006 à 15:59
IndyGroumpf Messages postés 2 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2006 - 29 mai 2006 à 16:54
Bonjour à tous!

Voilà mon problème : je souhaite lancer la commande 'javac' depuis un autre programme Java. En fait c'est pour créer un projet tomcat automatiquement. Je crée l'arorescence idoine (WEB-INF, WEB-INF/src, WEB-INF/class, WEB-INF/lib), ensuite je place les jars dont j'ai besoin dans le repértoire lib et le code source dans le repértoire src. Ensuite j'aimerai compiler ce joli source et placer le résultat dans le répertoire class.

Voilà le code correspondant à la tentative de compilation :

String[] cmdarray = {"javac","-d \\classes","-classpath \\lib","\"+servletName+".java"};
try {
            System.out.println("Debut de la compilation...");
            compil =myruntime.exec(cmdarray,null,workingdir);//workindir : File correspondant à chemin_de_la_servlet\WEB-INF
            intresult = compil.waitFor();
            if (result ==0)
                System.out.println("compilation terminee avec succes");
            else{
                System.err.println("echec de la compilation, code d'erreur : " +result);
            }
        }catch(Exception e){
            System.out.println(e.toString());
        }

Le problème étant que bien évidemment ça ne fonctionne pas. Il n'y a pas de message d'erreur, le programme arrive jusqu'au message avant le exec, puis plus rien...

Quelqu'un voit quel est le problème ? et comment y remédier ?

Merci infiniment d'avance...

2 réponses

mouzart Messages postés 161 Date d'inscription mardi 26 avril 2005 Statut Membre Dernière intervention 6 novembre 2008 4
29 mai 2006 à 16:45
Slt,
 Je pense que la commande compil.waitFor(); est bloquante ce qui bloque ton programme sur cette instruction. Assure bien si c'est le cas ou non.Et si c le cas il faut reveiller le thread.
bon courage.
0
IndyGroumpf Messages postés 2 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2006
29 mai 2006 à 16:54
Effectivement, le waitFor() est bloquant.
En enlevant cette instruction, le programme se poursuit. Par contre, visiblement la commande ne s'est pas effectuée...
J'imagine que cela vient de la liste d'arguments et notamment de la spécification des chemins du classpath, sourcepath... Mais je n'arrive pas à voir ce qui gêne.
Par ailleurs, comment faire pour récupérer les messages envoyés par ce thread (qui n'apparaissent pas dans ma console) ?

Encore une fois, merci d'avance!
0
Rejoignez-nous