Ich benutze JDT, um meine Java-Klassen zu kompilieren. BatchCompiler gibt eine Zeichenfolge zurück, aber ich brauche ein Array von Problemen/Fehlern mit ihren Spalten- und Zeileninformationen. compiler.compile (Einheiten); druckt den Fehler auf seinen Drucker, Compiler.resolve (Einheit) tut genau das, was ich will, aber es kann nur eine Java-Datei kompilieren.Wie kann ich JDT-Compiler programmgesteuert verwenden?
Ich habe ein Compiler-Objekt auf diese Weise:
Compiler compiler = new Compiler(env, DefaultErrorHandlingPolicies.exitAfterAllProblems(), new CompilerOptions(), requestor, new DefaultProblemFactory());
Und CompilationUnits erstellen, die Dateinamen und Dateiinhalte an den Compiler enthält.
CompilationUnit[] units = project.toCompilationUnit();
AFAIK, gibt es 2 Möglichkeiten, zu kompilieren, ist einer von ihnen (Einheiten) Methode kompilieren, die zu seiner Printwriter Leere und druckt Fehler und Probleme gibt, weil es keine Spalteninformationen zurückgibt, es ist für mich nicht sinnvoll . Die andere Möglichkeit ist die resolve (unit) -Methode, aber sie kann nur mit einer CompilationUnit arbeiten.
Weiß jemand, wie ich JDT-Compiler programmatisch verwenden kann, um mehrere Dateien zu kompilieren?
Gibt es ein Problem beim Durchlaufen der CompilationUnits und Aufruf von 'resolve'. –
@UnniKris Es funktioniert aber wie gesagt Auflösung nur einen CompilationUnit-Parameter. Looping, obwohl die CompilationUnits [] das Problem nicht löst, weil ich versuche, ein Projekt zu kompilieren, das viele .java-Dateien enthält, hängen voneinander ab und die CompilationUnit hat keine Informationen über andere CompilationUnits. –