我可以更改OSGi包的父类加载器吗?

时间:2012-10-05 13:06:42

标签: eclipse-plugin osgi classloader bundle equinox

问题陈述: 在Bundle A中找到一个资源(比如myClass)并加载它,如果找不到的话 在Bundle B中找到资源并以编程方式加载它,而控件在Bundle C中。 我引用了A和B bundle的ClassLoaders。

我所知道的是:对于每个OSGi包,父classLoader是Bundle 0的类加载器。和系统bla bla

如果我将B组的CL的父级更改为 - >>束B的CL和来自束B的CL的getClass?

是否会采用最佳做法?

限制:不要使用import,export,require语句进行解决。

由于

2 个答案:

答案 0 :(得分:1)

似乎无法完成。 Java不提供API来设置父类加载器。抱歉问这个问题。

答案 1 :(得分:0)

OSGi中的最佳实践是不更改类加载器。 OSGi中的系统经过深思熟虑,如果你改变它,你将遇到各种各样的麻烦。理想情况下,您不应该手动加载类。如果需要类或资源的实例,请将其加载到包含它的包中。如果您在另一个包中需要它,最佳做法是使用实​​例或带有实例的工厂发布服务。