我使用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编译器来编译多个文件?
答案 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问题标记。