1) バンドル Aは、バンドル C から取得したパッケージ com.X を再エクスポートします。
2) バンドル B は、パッケージ com.X をエクスポートします。
3) バンドル D は、A と B の両方に依存するようになりました。
バンドル D はどこからパッケージ com.X を取得しますか?
最初の質問は、同じパッケージを定義する 2 つのバンドルがある理由です。これは分割パッケージと呼ばれ、シャドーイングで問題が発生する可能性があるため、推奨されません。
ランタイムでは、パッケージの依存関係を解決するためにバンドル A または B のいずれかが選択されますが、これImport-Package
を直接制御することはできません (エクスポートに必須プロパティを設定することで、Eclipse の担当者が行うようなさまざまなトリックを実行できます)。
Require-Bundle
マージされたパッケージにcom.X
なるため、タイプのスーパーセットが表示されますが、タイプが重複している場合はどうなるかわかりません。
最も簡単なことは、分割パッケージを最初から避けることです。