我在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
的清单文件中导出和导入时指定了相同的包。
答案 0 :(得分:3)
在OSGi中拆分包是strongly discouraged。如果您拥有这些软件包,则应重命名一个或两个软件包,或将拆分软件包加入一个软件包。
Bundle2可以导入拆分包,但是Bundle2的类加载器只能看到Bundle1中的类,而不是Bundle2内部的类。
你可以将其中一个包作为另一个的fragment,这样就可以使用相同的类加载器。这需要仅更改片段包的清单,如果由于某种原因无法加入包或更改包名称,则可以选择此选项。