从osgi包导出和导入相同的包

时间:2017-11-16 09:37:52

标签: java maven osgi

我在osgi包Farmer = CSVFarmers.Where(f => !Farmers.Any(f2 => f.ContractNumber == f2.ContractNumber)).ToList(); 和另一个类中有一个类org.foo.Customer Bundle1在同一个osgi环境中的另一个osgi包org.foo.Subscriber中。 Bundle1 export-package org.foo。

Bundle2 import org.foo Bundle2包可以Bundle1。在运行时期间是否会发生冲突,因为在Bundle1的清单文件中导出和导入时指定了相同的包。

1 个答案:

答案 0 :(得分:3)

在OSGi中拆分包是strongly discouraged。如果您拥有这些软件包,则应重命名一个或两个软件包,或将拆分软件包加入一个软件包。

Bundle2可以导入拆分包,但是Bundle2的类加载器只能看到Bundle1中的类,而不是Bundle2内部的类。

你可以将其中一个包作为另一个的fragment,这样就可以使用相同的类加载器。这需要仅更改片段包的清单,如果由于某种原因无法加入包或更改包名称,则可以选择此选项。