Java 当两个包导出具有不同版本的相同包时导入包

Java 当两个包导出具有不同版本的相同包时导入包,java,osgi,Java,Osgi,我有三个假设包: bundleA导出包1(2.0.0)和包2(1.0.0) 捆绑B出口包装1(1.0.0)和包装2(2.0.0) bundleC进口包装1(2.0.0)和包装2(2.0.0) 当我运行此程序时,bundleC从bundleA导入package1(2.0.0),从bundleB导入package2(2.0.0),但也从bundleA导入package2(1.0.0)。为什么会发生这种情况 编辑:这是OSGi控制台向我展示的内容: Imported packages anothe

我有三个假设包:

  • bundleA导出包1(2.0.0)和包2(1.0.0)
  • 捆绑B出口包装1(1.0.0)和包装2(2.0.0)
  • bundleC进口包装1(2.0.0)和包装2(2.0.0)
当我运行此程序时,bundleC从bundleA导入package1(2.0.0),从bundleB导入package2(2.0.0),但也从bundleA导入package2(1.0.0)。为什么会发生这种情况

编辑:这是OSGi控制台向我展示的内容:

Imported packages
anotherdualpackage; version="2.0.0"<bundleA_1.0.0.qualifier [5]>
dualpackage; version="2.0.0"<bundleB_1.0.0.qualifier [3]>
dualpackage; version="1.0.0"<bundleA_1.0.0.qualifier [5]>
导入的包
另一个双重包装;version=“2.0.0”
双包装;version=“2.0.0”
双包装;version=“1.0.0”

bundleC无法导入程序包2两次。这是不允许的规范。这是我的想法,但不知何故,它得到解决无论如何。(参见我的更新)我猜OSGi 4.3版容器的工作方式是将包解析为功能。问题是:“一个导入的包vs一个规则”是否也适用于OSGi规范中的功能?