Bundle-ManifestVersion = 2 vs. Bundle-ManifestVersion = 1

时间:2010-09-08 09:04:12

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

背景:

  • 我们正在使用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 ...]`

1 个答案:

答案 0 :(得分:2)

根据OSGi core specifications r4章3.2.1.12,Bundle-Manifest-Version标题是:

Bundle-ManifestVersion标头定义了bundle跟随的 本规范的规则。 Bundle-ManifestVersion标头确定 捆绑是否遵循本规范的规则。它是1( 版本3捆绑包,2版本4及更高版本。未来的版本 OSGi服务平台可以为此标题定义更高的数字。

所以我想这取决于您使用的equinox版本,因此取决于相关的OSGI规范