Eclipse plugin 允许我更改OSGi包的父类装入器吗?

Eclipse plugin 允许我更改OSGi包的父类装入器吗?,eclipse-plugin,osgi,classloader,bundle,equinox,Eclipse Plugin,Osgi,Classloader,Bundle,Equinox,问题陈述: 在Bundle a中找到一个资源(比如myClass),如果找不到,则加载它 在Bundle B中找到资源并按语法加载,而控件位于Bundle C中。 我引用了a和B包的类装入器 我所知道的是:对于每个OSGi包,父类加载器都是包0的类加载器。还有这个系统 如果我将bundle B的CL的父级-->更改为bundle A的-->CL,并从bundle B的CL中获取类,可以吗 它是否符合最佳做法 限制:解决方案不使用导入、导出和require语句 谢谢看来这是办不到的。Java不提供

问题陈述: 在Bundle a中找到一个资源(比如myClass),如果找不到,则加载它 在Bundle B中找到资源并按语法加载,而控件位于Bundle C中。 我引用了a和B包的类装入器

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

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

它是否符合最佳做法

限制:解决方案不使用导入、导出和require语句


谢谢

看来这是办不到的。Java不提供API来设置父类加载器。很抱歉问这个问题。

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