OSGi捆绑包间歇性解析失败

OSGi捆绑包间歇性解析失败,osgi,apache-felix,osgi-bundle,Osgi,Apache Felix,Osgi Bundle,我已经编写了一个OSGi包,它依赖于下面的spring框架包和其他一些类似的JAR org.springframework.core-3.2.3.RELEASE.jar 大多数情况下,spring框架核心包启动时没有任何问题。但有时,捆绑包无法解决依赖关系。单击felix控制台中的开始按钮时引发以下错误: *ERROR* [FelixDispatchQueue] org.springframework.core FrameworkEvent ERROR (org.osgi.framework.

我已经编写了一个OSGi包,它依赖于下面的spring框架包和其他一些类似的JAR

org.springframework.core-3.2.3.RELEASE.jar
大多数情况下,spring框架核心包启动时没有任何问题。但有时,捆绑包无法解决依赖关系。单击felix控制台中的开始按钮时引发以下错误:

*ERROR* [FelixDispatchQueue] org.springframework.core FrameworkEvent ERROR (org.osgi.framework.BundleException: Unresolved constraint in bundle org.springframework.core [494]: Unable to resolve 494.0: missing requirement [494.0] osgi.wiring.package; (&(osgi.wiring.package=javax.xml.stream.events)(version>=0.0.0)))
org.osgi.framework.BundleException: Unresolved constraint in bundle org.springframework.core [494]: Unable to resolve 494.0: missing requirement [494.0] osgi.wiring.package; (&(osgi.wiring.package=javax.xml.stream.events)(version>=0.0.0))
at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4095)
at org.apache.felix.framework.Felix.startBundle(Felix.java:2114)
at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1368)
at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
at java.lang.Thread.run(Unknown Source)
另外,其他一些spring框架JAR也会抛出相同的错误,并且无法解析/启动

*ERROR* [FelixDispatchQueue] org.springframework.beans FrameworkEvent ERROR (org.osgi.framework.BundleException: Unresolved constraint in bundle org.springframework.beans [495]: Unable to resolve 495.0: missing requirement [495.0] osgi.wiring.package; (&(osgi.wiring.package=org.apache.commons.logging)(version>=1.1.1)(!(version>=2.0.0))))
org.osgi.framework.BundleException: Unresolved constraint in bundle org.springframework.beans [495]: Unable to resolve 495.0: missing requirement [495.0] osgi.wiring.package; (&(osgi.wiring.package=org.apache.commons.logging)(version>=1.1.1)(!(version>=2.0.0)))
at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4095)
at org.apache.felix.framework.Felix.startBundle(Felix.java:2114)
at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1368)
at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
at java.lang.Thread.run(Unknown Source)
据我所知,javax.*包是由系统包提供的。有谁能帮我解决这个问题吗

编辑:

这是在我终止java进程时发生的。对于具有以下导入的所有捆绑包,也会发生这种情况:

javax.jcr
javax.swing
javax.xml.stream.events
org.apache.commons.logging
javax.servlet
javax.sql
javax.script
javax.net

当我终止java进程并重新启动AEM时,我面临着这个问题。当我卸载捆绑包并重新启动AEM并重新安装捆绑包时,它工作正常。

默认情况下,系统捆绑包仅提供
java.*
软件包。所有其他包必须使用framework属性
org.osgi.framework.system.packages
定义。每个OSGi框架都有此属性的默认配置,该配置通常也依赖于所使用的Java运行时版本

如果系统包没有导出javax包,但您知道它在jra中可用,那么您可以使用框架属性
org.osgi.framework.system.packages.extra
。它允许定义除默认包之外要导出的包


有一件事很奇怪,你写道你只是偶尔会出错。我希望它要么一直工作,要么一直失败。

谢谢您的回复。但是javax.*包是从我的系统包中导出的。我仔细检查了一下。而且这个问题是间歇性的。在这一点上,我无法确定导致这个错误的原因。我也面临着同样的问题。这种情况很少发生。但是当它发生时,我必须卸载所有的spring捆绑包并重新启动捆绑包。然后,当我安装相同的捆绑包时,它开始工作。你在任何地方使用Require捆绑包吗?不。我在任何地方都没有使用Require捆绑包。如果我杀死java进程,就会发生这种情况。我把这个作为我的问题的一个编辑。我认为这是一个AEM问题。如果它只发生在您终止进程时,那么它实际上与OSGi无关。