2010-09-08 97 views
2

背景:捆绑-ManifestVersion = 2对比捆绑-ManifestVersion = 1

  • 我们正在建立与Maven蚀RCP插件并产生与Apache菲利克斯插件MANIFEST.MF文件。这个插件是我们公司内部开发的一个更大的RCP框架的一部分。

问题:

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

问题:

  • 是什么软件包-ManifestVersion = 1和捆绑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 ...]` 

回答

2

根据OSGi的core specifications r4章3.2.1.12捆ManifestVersion标题是:

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

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