【问题标题】:Bundle-ManifestVersion=2 vs. Bundle-ManifestVersion=1Bundle-ManifestVersion=2 与 Bundle-ManifestVersion=1
【发布时间】:2010-09-08 09:04:11
【问题描述】:

背景:

  • 我们正在使用 Maven 构建一个 Eclipse RCP 插件,并使用 Apache Felix 插件生成 MANIFEST.MF 文件。该插件是我们公司内部开发的更大 RCP 框架的一部分。

问题:

  • Felix 插件在 MANIFEST.MF 文件中设置 Bundle-ManifestVersion=2。当我们使用这个清单文件时,我们的框架会抛出与 org.eclipse.runtime 相关的不同异常
  • 当我们(手动)设置 Bundle-ManifestVersion=1 或从 MANIFEST.MF 文件中删除此条目时,此错误不再出现。

问题:

  • Bundle-ManifestVersion=1 和 Bundle-ManifestVersion=2 有什么区别?

MANIFEST.MF 文件如下所示:

Manifest-Version: 1.0
Embed-Directory: lib
Bundle-ClassPath: .
Tool: Bnd-0.0.357
Bundle-Name: [... omitted ...]
Created-By: Apache Maven Bundle Plugin
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Require-Bundle: org.eclipse.core.runtime, [... omitted ...]
Build-Jdk: 1.6.0_21
Bundle-Version: 1.0.2
Bnd-LastModified: 1283847218240
Embed-Transitive: false
Bundle-ManifestVersion: 2
Import-Package: [... omitted ...]
Bundle-SymbolicName: [... omitted ...]`

【问题讨论】:

    标签: java eclipse eclipse-plugin eclipse-rcp manifest


    【解决方案1】:

    根据 OSGi core specifications r4 第 3.2.1.12 章,Bundle-Manifest-Version 标头为:

    Bundle-ManifestVersion 标头定义捆绑包遵循 本规范的规则。 Bundle-ManifestVersion 标头确定 捆绑包是否遵循本规范的规则。它是 1( 默认值)用于第 3 版捆绑包,2 用于第 4 版及更高版本。未来的版本 OSGi 服务平台可以为此标头定义更高的数字。

    所以我猜这取决于您使用的 Equinox 版本以及相关的 OSGI 规范

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-15
      • 1970-01-01
      • 2010-11-17
      • 2017-09-04
      • 2016-09-03
      • 1970-01-01
      • 1970-01-01
      • 2018-10-19
      相关资源
      最近更新 更多