プロジェクトのアノテーション付きクラスからメタデータコード(.javaファイル)を生成するために、サードパーティのアノテーションプロセッサを使用しています。Eclipseを介してプロセッサを正常に構成し([プロパティ]->[Javaコンパイラ]->[注釈処理])、コード生成は正常に機能します(コードは自動的に作成および生成されます)。また、Eclipseは、生成されたクラスとそのフィールドをエラーなしで正常に自動補完します。クラス「some.package.Foo」があり、生成されたメタデータクラスが「some.package.Foo_」であるとします。オートコンプリートの助けを借りて、Eclipseエディターで次のコードをエラーなしで取得できます。
import some.package.Foo_;
...
public class Test {
void test() {
Foo_.someField = null; // try to access a field from the generated class Foo_
}
}
ただし、実際にプロジェクトをビルドすると(または、自動的にビルドが有効になっているためファイルを保存すると)、「some.package.Foo_」を解決できないというエラーが表示されます。Eclipseがsome.package.Foo_を同時に生成し、コンパイルしているようです。
私は2つの一時的な解決策を見つけました(そもそも注釈プロセッサの使用を実質的に妨げています):
- 生成されたクラスをビルドする前に、生成されたすべてのファイルを右クリックして[プロパティ]に移動し、[派生]チェックボックスをオフにします。その後、プロジェクトのクリーンアップを行い、インポートは正常です。エラーは発生しません。ただし、もう一度クリーンアップを実行すると、ファイルの生成によって「派生」ティックが再度(自動的に)チェックされるため、エラーが再び表示されます。したがって、これは本当に面倒で時間がかかります。
- また、これらすべてのファイルの「派生」ティックのチェックを外し、今回は、これらのファイルを含むソースフォルダーとパッケージの「派生」チェックのチェックを外します。次に、注釈プロセッサを無効にしてから、クリーンアップを実行します。別のクリーンアップを行ってもインポートエラーは発生しませんが、モデルを更新するものを変更する場合はアノテーションプロセッサをオンに戻して繰り返す必要があるため、アノテーションプロセッサを使用するメリットはありません。それらのファイルの新しいバージョンを生成した後、それをオフにするこの退屈な手順。
これはEclipseのバグですか?はいの場合、上記の2つよりも優れた回避策またはクイックフィックスはありますか?そうでない場合、私は問題を解決するために何を試みるべきですか?
また、ビルドパス上のライブラリの順序を並べ替えてみましたが、役に立ちません。