Mi compilación dinámica en Java 6 funciona perfectamente. Sin embargo, me gustaría cambiar la ruta de salida. He intentado toneladas de cosas (te ahorraré) en vano. De todos modos, aquí está el código de trabajoEspecifique la ruta de salida para la compilación dinámica
String[] filesToCompile = { "testFiles/Something.java" };
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjects(filesToCompile);
CompilationTask task = compiler.getTask(null, fileManager, null,null, null, compilationUnits);
System.out.println("Good? " + task.call());
Pero la salida va al directorio de origen, que no es lo que quiero.
Sospecho que la respuesta puede estar en el compiler.getTask
pero la API no es muy explícita en cuanto a lo que algunos de los parámetros pueden significar. O tal vez algo con el administrador de archivos. He intentado
fileManager.setLocation(StandardLocation.locationFor("testFiles2"), null);
pero de nuevo, adivinando probablemente no es una buena idea.
Gracias!
Editar: He intentado usar opciones, también, como esto (lo siento si hay una manera más compacta):
final List<String> optionsList = new ArrayList<String>();
optionsList.add("-d what");
Iterable<String> options = new Iterable<String>() {
public Iterator<String> iterator() {
return optionsList.iterator();
}
};
y luego pasar las opciones a getTask, pero el mensaje de error es "no válida Bandera."
+1 por hacerme consciente de que existe una cosa tal como la compilación dinámica ahora! –
¡Siempre lo hubo, ahora está incorporado! –
Mi respuesta fue actualizada. –