2010-09-08 2 views
2

фона:Bundle-ManifestVersion = 2 vs. Bundle-ManifestVersion = 1

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

Проблема:

  • Феликс плагин устанавливает 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 ...]` 

ответ

2

Согласно OSGi core specifications r4 главе 3.2.1.12 заголовок Bundle-ManifestVersion является:

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

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

Смежные вопросы