我的Java 6动态编译正常工作,但我想更改输出路径。我已经尝试了很多方法(我就不多说了),但都没有成功。无论如何,这是有效的代码。
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());
但是输出结果会到源目录,这不是我想要的。
我怀疑答案可能在compiler.getTask
中,但是API对于某些参数的含义并不是很明确。或者可能与fileManager有关。我已经尝试过了。
fileManager.setLocation(StandardLocation.locationFor("testFiles2"), null);
但是,再次猜测可能不是一个好主意。
谢谢!
编辑:我也尝试使用选项,像这样(如果有更紧凑的方式,请原谅):
final List<String> optionsList = new ArrayList<String>();
optionsList.add("-d what");
Iterable<String> options = new Iterable<String>() {
public Iterator<String> iterator() {
return optionsList.iterator();
}
};
我尝试将选项传递给getTask,但是收到了“Invalid Flag.”的错误信息。