7

JDT を使用して Java クラスをコンパイルします。BatchCompiler は文字列を返しますが、列と行の情報に関する問題/エラーの配列が必要です。コンパイラ.コンパイル(ユニット); エラーをprintwriterに出力します。compiler.resolve(unit)はまさに私が望むことを行いますが、コンパイルできるJavaファイルは1つだけです。

この方法でコンパイラ オブジェクトを作成しました。

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

そして、ファイル名とファイルの内容を含む CompilationUnits をコンパイラに作成します。

CompilationUnit[] units = project.toCompilationUnit();

私の知る限り、コンパイルには2つの方法があります。そのうちの1つは、voidを返し、エラーと問題をPrintWriterに出力するcompile(units)メソッドです。これは、列情報を返さないため、私にとっては役に立ちません。もう 1 つの方法は resolve(unit) メソッドですが、1 つの CompilationUnit でしか機能しません。

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

プログラムでJDTコンパイラを使用して複数のファイルをコンパイルする方法を知っている人はいますか?

4

1 に答える 1

1

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.

代わりに、Java ファイルをコンパイルしてコンパイルの問題を判断する公式の方法については、こちらで説明しています。基本的には、Java プロジェクトを作成し、その上で Eclipse のビルダーを呼び出してから、プロジェクトの Java 問題マーカーを照会します。

于 2013-10-03T08:44:08.663 に答える