Biên dịch động của tôi trong Java 6 đang hoạt động hoàn hảo. Tuy nhiên, tôi muốn thay đổi đường dẫn đầu ra. Tôi đã thử rất nhiều thứ (tôi sẽ tha cho bạn) vô ích. Dù sao, đây là mã hoạt độngChỉ định Đường dẫn Đầu ra cho Biên dịch Động
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());
Nhưng đầu ra đi tới thư mục nguồn, không phải là thứ tôi muốn.
Tôi nghi ngờ câu trả lời có thể nằm trong số compiler.getTask
nhưng API không rõ ràng về ý nghĩa của một số thông số. Hoặc có lẽ một cái gì đó với fileManager. Tôi đã thử
fileManager.setLocation(StandardLocation.locationFor("testFiles2"), null);
nhưng một lần nữa, đoán có lẽ không phải là một ý hay.
Cảm ơn!
Edit: tôi đã cố gắng lựa chọn sử dụng, quá, như thế này (xin lỗi nếu có một cách nhỏ gọn hơn):
final List<String> optionsList = new ArrayList<String>();
optionsList.add("-d what");
Iterable<String> options = new Iterable<String>() {
public Iterator<String> iterator() {
return optionsList.iterator();
}
};
và sau đó đi qua các tùy chọn để getTask, nhưng thông báo lỗi là "không hợp lệ Gắn cờ. "
+1 để làm cho tôi nhận thức được rằng có một điều như biên soạn động bây giờ! –
Luôn luôn có, bây giờ nó được xây dựng trong! –
Câu trả lời của tôi đã được cập nhật. –