Ma compilation dynamique dans Java 6 fonctionne parfaitement. Cependant, je voudrais changer le chemin de sortie. J'ai essayé des tonnes de choses (je vous épargnerai) en vain. Quoi qu'il en soit, voici le code de travailSpécifier le chemin de sortie pour la compilation dynamique
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());
Mais la sortie va dans le répertoire source, ce qui est pas ce que je veux.
Je suppose que la réponse peut se trouver dans le compiler.getTask
mais l'API n'est pas très explicite quant à ce que certains des paramètres pourraient signifier. Ou peut-être quelque chose avec le gestionnaire de fichiers. J'ai essayé
fileManager.setLocation(StandardLocation.locationFor("testFiles2"), null);
mais encore une fois, deviner n'est probablement pas une bonne idée.
Merci!
Edit: J'ai essayé d'utiliser des options aussi, comme ça (désolé s'il y a une façon plus compacte):
final List<String> optionsList = new ArrayList<String>();
optionsList.add("-d what");
Iterable<String> options = new Iterable<String>() {
public Iterator<String> iterator() {
return optionsList.iterator();
}
};
et en faisant passer les options à getTask, mais le message d'erreur est « non valide Drapeau."
+1 pour me faire savoir qu'il ya une telle chose que la compilation dynamique maintenant! –
Il y en avait toujours, maintenant c'est intégré! –
Ma réponse a été mise à jour. –