0

问题陈述:在 Bundle A 中找到一个资源(比如说 myClass)并加载它,如果没有找到 在 Bundle B 中定位资源并以编程方式加载它,而控件位于 Bundle C 中。我对 A 和B束。

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

如果我将捆绑 B 的 CL 的父级更改为 -> 捆绑 A. 的 CL 并从捆绑 B 的 CL 更改 getClass 可以吗?

会采用最佳实践吗?

限制:不要使用import、export、require语句解决。

谢谢

4

2 回答 2

1

好像做不到 Java 不提供 API 来设置父类加载器。很抱歉问这个问题。

于 2012-10-05T13:22:45.627 回答
0

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

于 2012-10-06T06:14:29.790 回答