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 :
Les logs sont le suivants :
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 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());
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
Partager