Mavenコンパイラはインポートを解決できません

Dec 07 2020

Mavenとtychoを使用して複数のEclipse製品を作成しようとしています。私は現在、バンドルAがバンドルBのクラスに依存しているという問題に悩まされています。バンドルBのパッケージ構造は次のようになっています。

a.b.c.d.e.f.Class

AIをビルドしようとすると、次のようなコンパイルエラーが発生します。

 import a.b.c.d.e.f.MyClass;
[ERROR] ^^^^^^^^^
[ERROR] The import a.b.c.d.e cannot be resolved

よく見ると、Mavenは明らかに間違ったパッケージを解決しようとしていることがわかります。これa.b.c.d.eは、インポートされる予定のクラスが実際ににある間は解決できないと述べているだけだからa.b.c.d.e.fです。

また、にクラスはありませんa.b.c.d.ea.b.c.d.eマニフェストにエクスポートされたパッケージとして含めることと、そのリストから削除することの両方を試しましたが、どちらも役に立ちませんでした。

ここで問題は何でしょうか?

回答

1 Radioo Dec 07 2020 at 20:08

非常に詳細なロギングでmavenを実行した後、バンドルAのコンパイル時にmaven(tycho)がJDTコンパイラーに渡されているという引数を再確認しました。バンドルBのクラスパスに追加したJARのみが渡されていることに気付きました。

次に、を指定したバンドルBのマニフェストでBundle-Classpath、クラスパスにJARしかないことに気付きました。以前は、バンドル自体のクラスがデフォルトで追加されると思っていましたが,.Bundle-Classpathプロパティに追加した後、ビルドは再び機能しました。

あなたがそれについてもっと読みたいのなら、この投稿は私を正しい方向に向けました。