Java OSGi bundle始终有一个';启动';maven构建后的状态

Java OSGi bundle始终有一个';启动';maven构建后的状态,java,maven,osgi,Java,Maven,Osgi,因此,我尝试向我的项目添加一个新包。在EclipseEquinox中,一切都很完美,但Maven(Tycho)构建存在一个问题。我的捆绑包在OSGi控制台中可见,其状态为“正在启动”,但在需要其服务时不会启动。我可以从OSGi控制台手动启动捆绑包,然后它就可以工作了。我甚至可以重新启动我的应用程序后,它仍然工作 当我进入bundles.info时,我可以看到这一行: org.eclipse.orion.server.authentication.github,1.0.0.v20151013-05

因此,我尝试向我的项目添加一个新包。在EclipseEquinox中,一切都很完美,但Maven(Tycho)构建存在一个问题。我的捆绑包在OSGi控制台中可见,其状态为“正在启动”,但在需要其服务时不会启动。我可以从OSGi控制台手动启动捆绑包,然后它就可以工作了。我甚至可以重新启动我的应用程序后,它仍然工作

当我进入bundles.info时,我可以看到这一行:

org.eclipse.orion.server.authentication.github,1.0.0.v20151013-0508,plugins/org.eclipse.orion.server.authentication.github_1.0.0.v20151013-0508.jar,4,false
如果我在最后将“false”改为“true”,那么它也会起作用。如何配置我的捆绑包,使其在默认情况下为“真”


我的bundle(我们称之为A)背后更大的故事是:它实现bundle B中定义的接口(因此A需要B),并在该接口下注册服务。此服务在B内部使用(B在运行前不知道A)。我听说删除这种循环依赖可能会有所帮助,但我不想修改B以避免合并冲突。

也许这不是一个真正的问题。这是春分的典型表现。它显示bundle开始,直到另一个bundle实际需要bundle提供的服务。所以通常你可以忽略从春分开始的状态


或者,您可以在felix上运行bundle,这些bundle应该被报告为活动的。

“Maven构建有问题”:在Maven构建期间,您使用什么来启动容器?JUnit扩展还是Maven插件?你的框架有多高?“你的包裹有多惊人?”Balazsoldos Maven用第谷创造了一个春分神器。项目中所有捆绑包的级别为4。但是,我不知道如何检查框架的startlevel。你是说Equinox对捆绑包使用惰性激活策略?是的。如果你切换到春分点,你也可以在卡拉夫观察到这一点。当我第一次看到这一点时,我感到非常困惑:-)这很奇怪。我认为这不符合规格。来自osgi.org:“在没有启动\激活\策略选项的情况下启动的捆绑包将始终被急切地激活。”如果捆绑包处于启动状态,则意味着其激活方法正在运行或尚未被调用(由于延迟激活策略)。因此,一些OSGi服务可能不可用,这可能会导致意外行为。可能是equinox中的一个bug。到目前为止,我只在最新的equinox版本中看到过,就像在Karaf 4.0.0中使用的一样。@ChristianSchneider equinox上一切正常-状态从一开始就开始。问题是,在用Maven构建的应用程序中,它不会自动启动(即使在需要时)。