【问题标题】:Unresolved constraint when trying to export a simple interface尝试导出简单界面时未解决的约束
【发布时间】:2012-09-22 18:37:41
【问题描述】:

我正在尝试迈出让自己熟悉 OSGI 框架的第一步。 但是,我什至无法启动仅导出一个包的捆绑包,仅此而已。 框架显示的错误对我来说听起来很荒谬,因为我将其读为“为了启动您的捆绑包,我需要解析 openjsip.service.locationservice 包。 但是这个包来自我的包! 无论如何,我认为我错了,但我无法理解问题所在,有人可以帮助我吗?

ERROR: Bundle openjsip.locationservice [6] Error starting file:////tmp/locationservice-1.0.0-SNAPSHOT.jar (org.osgi.framework.BundleException: Unresolved constraint in bundle openjsip.locationservice [6]: Unable to resolve 6.0: missing requirement [6.0] osgi.wiring.package; (&(osgi.wiring.package=openjsip.service.locationservice)(version>=1.0.0)))
org.osgi.framework.BundleException: Unresolved constraint in bundle openjsip.locationservice [6]: Unable to resolve 6.0: missing requirement [6.0] osgi.wiring.package; (&(osgi.wiring.package=openjsip.service.locationservice)(version>=1.0.0))
at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:3826)
at org.apache.felix.framework.Felix.startBundle(Felix.java:1868)
at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1191)
at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:295)
at java.lang.Thread.run(Thread.java:722)

这是我的 MANIFEST.MF:

Manifest-Version: 1.0
Bnd-LastModified: 1348338100498
Build-Jdk: 1.7.0_05
Built-By: devel
Bundle-ManifestVersion: 2
Bundle-Name: locationservice
Bundle-SymbolicName: openjsip.locationservice
Bundle-Version: 1.0.0.SNAPSHOT
Created-By: Apache Maven Bundle Plugin
Export-Package: openjsip.service.locationservice;uses:="javax.sip.header
 ,javax.sip";version="1.0.0.SNAPSHOT"
Import-Package: javax.sip;version="[1.2,2)",javax.sip.header;version="[1
 .2,2)"
Tool: Bnd-1.50.0

【问题讨论】:

    标签: java dependencies osgi bundle


    【解决方案1】:

    错误消息似乎与您发布的 MANIFEST.MF 不匹配。有没有可能你在中间重建了它?

    错误消息表明您的包导入openjsip.service.locationservice,并且无法解析导入。但是根据清单,您只导入javax.sipjavax.sip.header。因此,此错误消息不可能来自发布的捆绑清单。

    【讨论】:

    • 非常感谢,尼尔,我注意到我的包裹是从哪里拿走的。它是 /tmp 而不是 /target (我使用的是 Maven)。当我查看清单时,确实与我发布的内容完全不同。 IntelliJ IDEA 在捉弄我,它神奇地在 /tmp 中创建此文件并将其传递给 OSGI 框架。现在我需要调查发生了什么......
    【解决方案2】:

    感谢大家的帮助,问题出在 IDEA 配置上,它使用 facet 配置自行创建 MANIFEST.MF(我依靠 apache maven 插件将其留空)。由于某种原因,它忽略了这个插件或者还不能与它配对使用。 解决方案是告诉它“使用来自 target/classes/META-INF 的预定义 MANIFEST.MF”。

    再次感谢。

    【讨论】:

      猜你喜欢
      • 2014-01-13
      • 2017-09-11
      • 2020-03-20
      • 2018-10-23
      • 2020-03-04
      • 2013-06-23
      • 2019-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多