我对 OSGi 片段和Class.forName()
. 下面的例子说明了我的问题。
我有一个第三方捆绑包Foo
。我不能Foo
以任何方式修改。该捆绑包包含以下类:
public class Serializer {
public String summarizeClass(String className) {
Class<?> myClass = Class.forName(className);
...
}
}
Bar
如果我从 bundle for调用此方法org.myPackage.MyClass
,它将失败,因为MyClass
它不在 bundle 的类路径上Foo
。
我可以简单地添加一个Foo.fragment
具有依赖关系的片段Bar
来修改 bundle 的类路径Foo
吗?还是这种依赖只适用于片段中的类?
长话短说:Class.forName()
当在 Host 包的一个类中执行时,OSGi 的语义是什么?是否包括:
- 问:捆绑课程?答:是的。
- 问:片段中包含的类?答:是的。资源
- Q:导入的包和需要的bundle导出的包?答:是的。
- Q:所有fragment的导入包和需要bundle导出的包?答:我不知道。