2013-06-06 22 views
5

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?

+0

Gibt es ein Problem beim Durchlaufen der CompilationUnits und Aufruf von 'resolve'. –

+0

@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. –

Antwort

0

org.eclipse.jdt.internal.compiler.Compiler ist interne API. Gemäß dem JavaDoc seiner resolve Methode: Internal API used to resolve a given compilation unit. Can run a subset of the compilation process.

Stattdessen wird die offizielle Methode zum Kompilieren von Java-Dateien und zum Ermitteln der Kompilierungsprobleme beschrieben here. Im Grunde erstellen Sie ein Java-Projekt, rufen den Builder für Eclipse auf und fragen anschließend die Java-Problemmarker des Projekts ab.

Verwandte Themen