Bundle-ManifestVersion = 2 против Bundle-ManifestVersion = 1 - PullRequest
2 голосов
/ 08 сентября 2010

Справочная информация:

  • Мы создаем плагин eclipse RCP с Maven и генерируем файл MANIFEST.MF с помощью плагина Apache Felix.Этот плагин является частью более широкой инфраструктуры RCP, которая разработана внутри нашей компании.

Проблема:

  • Плагин Felix устанавливает Bundle-ManifestVersion = 2 в MANIFEST.MF файл.Когда мы используем этот файл манифеста, наша платформа выдает различные исключения, связанные с 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 Ответ

2 голосов
/ 08 сентября 2010

Согласно OSGi спецификации ядра r4 глава 3.2.1.12 заголовок Bundle-Manifest-Version:

Заголовок Bundle-ManifestVersion определяет, что пакет соответствует правиламэта спецификация.Заголовок Bundle-ManifestVersion определяет, соответствует ли пакет правилам этой спецификации.Это 1 (по умолчанию) для выпусков 3, 2 для выпусков 4 и новее.Будущая версия OSGi Service Platform может определять более высокие числа для этого заголовка.

Так что я думаю, это зависит от используемой версии равноденствия и, следовательно, от соответствующей спецификации OSGI

...