2016-09-27 15 views
1
私はOSGIフラグメントのいくつかの誤解を持っている

、私は2つのクラス「com.company.C1」と「COMとのバンドル「B」を展開しているとしバンドルおよびそのフラグメント

間でクラスを重複してクラスローダをどうしますか。 company.C2 "C1はC2を使用する。 次に、ホストバンドル「B」に、Fが1つのクラス「com.company.C2」のみを含むフラグメントFを配備しました。

今、クラス "com.company.C1"が実行されている場合、 "B"または "F"から "com.company.C2"クラス(ファイル)が使用されますか?

同じクラスローダーで同じクラスC2が2回存在すると、ランタイムエラー(同じバージョン&の異なるバージョン)が発生する可能性がありますか?

答えて

5

「3.9.4全体検索順序」OSGiコア仕様のを読むとすべてが明確になります。

要約:バンドル内のクラスが最初にチェックされ、フラグメントバンドルよりも優先されます。バンドル内およびフラグメントバンドル内にクラスがある場合、フラグメントバンドル内のクラスは決して使用されません。

+0

「3.9.1バンドルクラスパス」も参照してください。このバンドルクラスパスは、ホストバンドル内のクラスを置き換えるフラグメントのホストバンドル内での「スペース」の開き方の例を示しています。 –

関連する問題