【问题标题】:Am I allowed to change parent class loader of an OSGi bundle?我可以更改 OSGi 包的父类加载器吗?
【发布时间】:2012-09-26 15:34:29
【问题描述】:

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

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

如果我将包 B 的 CL 的父级更改为 -> 包 A. 的 CL 并从包 B 的 CL 中获取类,可以吗?

是否符合最佳实践?

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

谢谢

【问题讨论】:

    标签: eclipse-plugin osgi classloader bundle equinox


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-21
        • 1970-01-01
        • 2018-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多