私はJavaが初めてで、このチュートリアルは非常に有益であり、すべてを詳細に説明しているため、このチュートリアルに従っています。チュートリアルの最後で、JavaFileManager を使用して複数の Java ファイルをコンパイルする方法を説明し、その例をいくつか示しますが、まだ複数のファイルを自分でコンパイルすることはできません。
もう1つの問題は、この例では1つのJavaファイルをコンパイルする方法しか示していないことです(すでに動作しています)が、複数のファイルで構成されたプロジェクトをコンパイルできるようにしたいので、問題が発生しています自分のシステムの複数の Java クラス
これは私が今持っているものです:
public static void main(String[] args) throws Exception {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
// Line 1.
MyDiagnosticListener listener = new MyDiagnosticListener(); // Line 2.
StandardJavaFileManager fileManager = compiler.getStandardFileManager(
listener, null, null); // Line 3.
String fileToCompile = "test" + File.separator + "ManyErrors.java";
// Line 4
Iterable fileObjects = fileManager.getJavaFileObjectsFromStrings(Arrays
.asList(fileToCompile)); // Line 5
CompilationTask task = compiler.getTask(null, fileManager, listener,
null, null, fileObjects); // Line 6
Boolean result = task.call(); // Line 7
if (result == true) {
System.out.println("Compilation has succeeded");
}
}
class MyDiagnosticListener implements DiagnosticListener {
public void report(Diagnostic diagnostic) {
System.out.println("Code->" + diagnostic.getCode());
System.out.println("Column Number->" + diagnostic.getColumnNumber());
System.out.println("End Position->" + diagnostic.getEndPosition());
System.out.println("Kind->" + diagnostic.getKind());
System.out.println("Line Number->" + diagnostic.getLineNumber());
System.out.println("Message->" + diagnostic.getMessage(Locale.ENGLISH));
System.out.println("Position->" + diagnostic.getPosition());
System.out.println("Source" + diagnostic.getSource());
System.out.println("Start Position->" + diagnostic.getStartPosition());
System.out.println("\n");
}