Я использую JDT для компиляции моих классов Java. BatchCompiler возвращает строку, но мне нужен массив проблем/ошибок с их информацией о столбцах и строках. compiler.compile (единицы); печатает ошибку в своем printwriter, compiler.resolve (unit) делает именно то, что я хочу, но он может скомпилировать только один файл java.Как я могу использовать программный компилятор JDT?
Я создал объект компилятора следующим образом:
Compiler compiler = new Compiler(env, DefaultErrorHandlingPolicies.exitAfterAllProblems(), new CompilerOptions(), requestor, new DefaultProblemFactory());
И создать CompilationUnits, который содержит имена файлов и содержимое файла компилятора.
CompilationUnit[] units = project.toCompilationUnit();
AFAIK, есть 2 способа компиляции, один из них компилировать (единиц) метод, который возвращает недействительные и печатает ошибки и проблемы его PrintWriter, потому что он не возвращает информацию столбца, это не полезно для меня , Другим способом является метод разрешения (единицы), но он может работать только с одним компилятором.
compiler.resolve(units[index], true, true, true);
Кто-нибудь знает, как я могу программным образом использовать компилятор JDT для компиляции нескольких файлов?
Есть ли проблемы с циклом через CompilationUnits и вызовом 'resolve'. –
@UnniKris Он работает, но, как я сказал, решение принимает только один параметр CompilationUnit. Looping, хотя CompilationUnits [] не решает проблему, потому что я пытаюсь скомпилировать проект, который включает в себя многие .java-файлы, зависит друг от друга, а CompilationUnit не имеет никакой информации о других компиляторах. –