如何在bundle和它的片段之间复制类时classloader

时间:2016-09-27 14:10:32

标签: osgi osgi-bundle osgi-fragment

我对OSGI片段有一些误解,

假设我已经使用两个类“com.company.C1”和“com.company.C2”部署了一个包“B”,其中C1使用C2。 然后,我为主机包“B”部署了一个片段“F”,其中F只包含一个类“com.company.C2”(第一类代码稍有变化)

现在,如果正在执行“com.company.C1”类,将使用哪个类(文件)“com.company.C2”,从“B”还是从“F”?

在相同的类加载器中是否存在相同类C2两次会导致运行时错误(相同的版本和不同版本)?

1 个答案:

答案 0 :(得分:5)

阅读" 3.9.4 OSGi核心规范的总体搜索顺序" ,一切都将清晰。

简而言之:首先检查bundle中的类而不是片段bundle。如果在bundle和fragment bundle中有一个类,那么片段bundle中的类将永远不会被使用。