如何以编程方式使用JDT编译器?

时间:2013-06-06 19:57:16

标签: eclipse eclipse-plugin eclipse-jdt java-compiler-api

我使用JDT编译我的java类。 BatchCompiler返回一个字符串,但我需要一系列问题/错误及其列和行信息。 compiler.compile(单位);将错误打印到其printwriter,compiler.resolve(unit)正是我想要的,但它只能编译一个java文件。

我用这种方式创建了一个编译器对象:

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

创建包含文件名和文件内容的CompilationUnits到编译器。

CompilationUnit[] units = project.toCompilationUnit();

AFAIK,有两种编译方式,其中一种是编译(单位)方法,它返回void并将错误和问题打印到其PrintWriter,因为它不返回对我没用的列信息。另一种方法是resolve(unit)方法,但它只能使用一个CompilationUnit。

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

有谁知道如何以编程方式使用JDT编译器来编译多个文件?

1 个答案:

答案 0 :(得分:0)

org.eclipse.jdt.internal.compiler.Compiler是内部API。根据其resolve方法的JavaDoc:Internal API used to resolve a given compilation unit. Can run a subset of the compilation process

相反,here描述了编译Java文件和确定编译问题的官方方式。基本上,您创建一个Java项目并在其上调用Eclipse的构建器,然后查询项目的Java问题标记。