Java Bundle ManifestVersion=2与Bundle ManifestVersion=1

Java Bundle ManifestVersion=2与Bundle ManifestVersion=1,java,eclipse,eclipse-plugin,eclipse-rcp,manifest,Java,Eclipse,Eclipse Plugin,Eclipse Rcp,Manifest,背景: 我们正在使用Maven构建eclipse RCP插件,并使用ApacheFelix插件生成MANIFEST.MF文件。这个插件是我们公司内部开发的更大RCP框架的一部分 问题是: Felix插件在MANIFEST.MF文件中设置Bundle ManifestVersion=2。当我们使用这个清单文件时,我们的框架抛出与org.eclipse.runtime相关的不同异常 当我们设置Bundle ManifestVersion=1(手动)或从MANIFEST.MF文件中删除此条目时,

背景:

  • 我们正在使用Maven构建eclipse RCP插件,并使用ApacheFelix插件生成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 ...]`
根据OSGi第3.2.1.12章,包清单版本头为:

捆绑包版本头定义捆绑包遵循 本规范的规则。捆绑包版本头决定 捆绑包是否遵循本规范的规则。它是1(1) 默认设置)对于版本3捆绑包,对于版本4和更高版本2。未来版本的 OSGi服务平台可以为此标头定义更高的数字。

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