2013-06-06 25 views
5

Używam JDT do kompilowania moich klas java. BatchCompiler zwraca ciąg znaków, ale potrzebuję tablicy problemów/błędów z informacjami o kolumnach i wierszach. compiler.compile (jednostki); drukuje błąd do swojego autora wydruku, compiler.resolve (jednostka) robi dokładnie to, co chcę, ale może skompilować tylko jeden plik java.Jak programowo użyć kompilatora JDT?

stworzyłem obiekt kompilatora w następujący sposób:

Compiler compiler = new Compiler(env, DefaultErrorHandlingPolicies.exitAfterAllProblems(), new CompilerOptions(), requestor, new DefaultProblemFactory()); 

I tworzyć CompilationUnits który zawiera nazwy plików i zawartości pliku do kompilator.

CompilationUnit[] units = project.toCompilationUnit(); 

AFAIK, istnieją 2 sposoby kompilacji, jeden z nich jest kompilacja (jednostki) metodę, która zwraca void i drukuje błędy i problemy z jego PrintWriter, ponieważ nie zwraca informacji o kolumnie nie jest dla mnie przydatne . Innym sposobem jest metoda rozstrzygnięcia (jednostka), ale może działać tylko z jedną KompilacjąUnit.

compiler.resolve(units[index], true, true, true); 

Czy ktoś wie, w jaki sposób programowo użyć kompilatora JDT do kompilacji wielu plików?

+0

Czy jest jakiś problem z zapętlaniem KompilacjiUstaw i wywoływania 'rozstrzygnięcia'. –

+0

@UnniKris Działa, ale jak powiedziałem, rozwiązanie zajmuje tylko jeden parametr CompilationUnit. Zapętlanie przez CompilationUnits [] nie rozwiązuje problemu, ponieważ próbuję skompilować projekt, który zawiera wiele plików .java, które zależą od siebie nawzajem, a CompilationUnit nie ma żadnych informacji o innych CompilationUnits. –

Odpowiedz

0

org.eclipse.jdt.internal.compiler.Compiler jest wewnętrznym API. Zgodnie z JavaDoc jego metody resolve: Internal API used to resolve a given compilation unit. Can run a subset of the compilation process.

Zamiast tego oficjalny sposób kompilowania plików Java i określania problemów z kompilacją jest opisany jako here. Zasadniczo tworzysz projekt Java i wywołujesz na nim program budujący Eclipse, a następnie przeszukujesz znaczniki problemów Java projektu.