[Compilation] Compiler à l'éxécution avec com.sun.tools.javac.Main()
Bonjour tout le monde, je suis face à un problème qui me turlupine pas mal.
Je veux compiler des .java depuis mon programme, pour celà j'aii tenté d'utiliser com.sun.tools.javac.Main.compile(..).
Bien que je ne recoive pas la moindre erreur, le .class n'apparait jamais.
A force de chercher et de ne pas avancer, je me suis résolu à faire un appel système à javac. Et la, avec les mêmes arguments, ça marche sans problème. Je me touren donc vers vous en espérant pouvoir utiliser com.sun.tools.javac.Main au lieu de Runtime.exec(..).
Voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| String[] args = new String[] {
//"javac", // A utiliser dans le cas d'un appel système
"-g", "-verbose",
"-classpath", "\""+classpath.trim()+"\"",
//"-d", "\""+source.getParentFile().getAbsolutePath()+"\\\"",
"\""+source.getAbsolutePath().trim()+"\""
};
logger.info("Compiling %s to %s.", source.getAbsolutePath(), source.getParentFile().getAbsolutePath());
logger.debug("Compiling : \"javac %s\"", Arrays.toString(args).replaceAll(",|\\[|\\]", ""));
ByteArrayOutputStream bao = new ByteArrayOutputStream();
int result = com.sun.tools.javac.Main.compile(args, new PrintWriter(bao));
logger.info("Compilation %s, status : %d. Result : %s",
((bao.toString().indexOf("error")==-1)?"passed":"failed"),
result,
bao.toString()); |
Les logs sont le suivants :
Citation:
Compiling C:\Program Files\Apache Software Foundation\Apache Tomcat\6.0.18\temp\tmp_62252\be\me\app\commons\beans\FolderExtension.java to C:\Program Files\Apache Software Foundation\Apache Tomcat\6.0.18\temp\tmp_62252\be\me\app\commons\beans.
Compiling : "javac -g -verbose -classpath "C:\Program Files\Apache Software Foundation\Apache Tomcat\6.0.18/bin/bootstrap.jar;C:\Program Files\Java\jdk1.6.0_10/lib/tools.jar;C:\Program Files\Java\jdk1.6.0_10\bin;C:\Program Files\Apache Software Foundation\Apache Tomcat\6.0.18\bin;C:\Program Files\Apache Software Foundation\Apache Tomcat\6.0.18\webapps\SicsWeb\WEB-INF\classes\be\me\app\commons\beans;C:/Program Files/Apache Software Foundation/Apache Tomcat/6.0.18/webapps/SicsWeb/WEB-INF/classes;C:/Program Files/Apache Software Foundation/Apache Tomcat/6.0.18/webapps/SicsWeb/WEB-INF/classes/be/gervaisb/sics/commons/beans/StudentFolder.class" "C:\Program Files\Apache Software Foundation\Apache Tomcat\6.0.18\temp\tmp_62252\be\me\app\commons\beans\FolderExtension.java""
Compilation passed, status : 2. Result :
Merci