2010-09-08 190 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規範