OSGI捆绑包';未调用s start()方法

OSGI捆绑包';未调用s start()方法,osgi,osgi-bundle,Osgi,Osgi Bundle,在我的环境中,使用activator的捆绑包很少。仅在其中一个包中,未调用start()方法。基本上它没有被激活。此捆绑包唯一的更改是,它使用的是“DynamicImport包”:。 删除此标记可以解决start()未被调用的问题,但这是不可能的,因为在我的场景中,所有包都不是预先知道的 有人能帮帮我吗,我已经被这件事缠住了。 我想不出问题出在哪里,他们两人又有什么关系。他们没有关系。删除dynamicmport包不会影响捆绑包是否启动,因此必须进行其他操作。您是否真的在包的任何地方调用了Bun

在我的环境中,使用activator的捆绑包很少。仅在其中一个包中,未调用start()方法。基本上它没有被激活。此捆绑包唯一的更改是,它使用的是“DynamicImport包”:。 删除此标记可以解决start()未被调用的问题,但这是不可能的,因为在我的场景中,所有包都不是预先知道的

有人能帮帮我吗,我已经被这件事缠住了。
我想不出问题出在哪里,他们两人又有什么关系。

他们没有关系。删除
dynamicmport包
不会影响捆绑包是否启动,因此必须进行其他操作。您是否真的在包的任何地方调用了
Bundle.start()
方法


顺便说一句,使用
DynamicImport包
是一个非常糟糕的主意。几乎可以肯定,有一种更好的方法可以解决您认为可以通过使用DI-P解决的任何问题。

当使用DynamicImport包时,尤其是使用*时,您无法控制从何处提取包。因此,如果两个包导出同一个包,您将遇到大问题

例如,我在pax考试中遇到了一个问题,该考试将此*导入用于测试包,其中有两个版本的包javax.inject。当他们调用测试的包看到包的不同版本时,服务导入无法工作

因此,在您的示例中,可能有两个版本的包org.osgi.framework,接口BundleActivator位于其中。
您是否安装org.osgi.core api包?如果是,则将其移除。只有框架应该提供这些包。这可能会导致框架无法使用activator类。

似乎是这样。不确定该问题,但我们最终摆脱了动态导入,问题得到了解决。最终摆脱了动态导入:)