OSGi フラグメントとClass.forName()
. 以下の例は、私の問題を示しています。
サードパーティのバンドルがありFoo
ます。どうにも改造できませんFoo
。バンドルには次のクラスが含まれています。
public class Serializer {
public String summarizeClass(String className) {
Class<?> myClass = Class.forName(className);
...
}
}
Bar
bundle forからこのメソッドを呼び出すと、 bundle のクラスパスにないためorg.myPackage.MyClass
、失敗します。MyClass
Foo
bundle のクラスパスを変更するためにFoo.fragment
、依存関係を持つフラグメントを単純に追加できますか? それとも、この依存関係はフラグメント内のクラスにのみ適用されますか?Bar
Foo
簡単Class.forName()
に言うと、Host バンドルのクラスで実行された場合の OSGi のセマンティクスは何ですか? それには以下が含まれますか?
- Q: バンドル クラスは? A: はい。
- Q: フラグメントに含まれるクラスは? A: はい。ソース
- Q: インポートされたパッケージと、必要なバンドルからエクスポートされたパッケージは? A: はい。
- Q: インポートされたパッケージと、すべてのフラグメントの必要なバンドルからエクスポートされたパッケージは? A: わかりません。