【问题标题】:Running OSGI bundle from OSGI command prompt :Import-package missing constraint从 OSGI 命令提示符运行 OSGI 包:导入包缺少约束
【发布时间】:2023-03-10 08:47:01
【问题描述】:

我有一个包含以下 mainfest 的捆绑包:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: HelloCamera
Bundle-SymbolicName: HelloCamera
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: hellocamera.Activator
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: cameraservice, cameraserviceimpl, org.osgi.framework

Layout:
    HelloCamera
       -> hellocamera
            -> Activator.java

以及带有此清单的第二个捆绑包:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: CameraService
Bundle-SymbolicName: CameraService
Bundle-Version: 1.0.0.qualifier
Bundle-Localization: plugin
Export-Package: cameraservice, cameraserviceimpl
Import-Package: org.osgi.framework
Bundle-Activator: cameraserviceimpl.Activator

Layout:
    CameraService
       -> cameraservice
            -> CameraService.java
       -> cameraserviceimpl
            -> Activator.java 
            -> CameraServiceImpl.java

我可以从 Eclipse 运行第一个包,一切正常。然后我将两个包分别导出为CameraService.jarHelloCamera.jar

我打开了我的 OSGI 控制台,java -jar equinox.jar -console

osgi> install file:CameraService.jar
osgi> install file:HelloCamera.jar
osgi> ss
           id    State         Bundle
           17   INSTALLED      HelloCamera_1.0.0.qualifier
           18   RESOLVED       unknown_0.0.0 [18]

然后我得到

The Bundle could not be resolved. Reason: Missing Constraint: Import-Package: cameraservice; version="0.0.0"

【问题讨论】:

  • 您将 both 包导出为jar 是什么意思?一个jar,一个捆绑包。
  • @chrylis 我尝试将它们作为一个捆绑包和两个单独的捆绑包一起导出
  • 请从“two-jar”捆绑包中发布您的清单。 (通过将其从 zip 文件中复制出来,而不是从 Eclipse 中复制。)
  • @chrylis 我如何从jar 文件中获取maifest?
  • 第二个捆绑包有一些非常可疑的地方。为什么 OSGi 会将其报告为“已解决”但不知道它的名称?我认为可能 JAR 文件已损坏或清单无效。

标签: java eclipse jar osgi osgi-bundle


【解决方案1】:

搜索后,

我发现问题出在清单文件上。在我的设置中导出 jar 时,我说使用文件夹中已有的清单文件。

我从来没有看过路径指向什么(假设 eclipse 会正确设置它)但是 Eclipse 没有改变它的位置,所以两个 jar 都使用同一个 Manifest 文件。

经验教训。在盲目按finish之前总是检查表单。

【讨论】:

  • 听起来您正在以非常手动且容易出错的方式构建捆绑包。为什么不考虑使用适当的工具,例如 bnd 和 Bndtools?
猜你喜欢
  • 1970-01-01
  • 2013-10-22
  • 2018-09-29
  • 1970-01-01
  • 1970-01-01
  • 2010-09-30
  • 2012-03-06
  • 2011-04-05
  • 2023-03-12
相关资源
最近更新 更多