стартовый пакет slf4j не запускается на felix

У меня есть felix-framework-5.0.1, и я пытаюсь запустить пакет slf4j-api-1.6.0.jar в контейнере felix isgi.

  1. в консоли Феликса я набираю install file:bundle/slf4j-api-1.6.0.jar

  2. Я получаю сообщение Bundle ID: 42

  3. то пытаюсь запустить бандл start 42

  4. я получаю сообщение

org.osgi.framework.BundleException: Unable to resolve slf4j.api [42](R 42.0): missing requirement [slf4j.api [42](R 42.0)] osgi.wiring.package; (&(osgi.wiring.p ackage=org.slf4j.impl)(version>=1.5.5)) Unresolved requirements: [[slf4j.api [42](R 42.0)] osgi.wiring.package; (&(osgi.wiring.package=org.slf4j.impl)(version>= 1.5.5))] g!

Кто-нибудь может мне помочь? как я могу запустить пакет slf4j в Felix?


person David Mkrtchyan    schedule 25.07.2015    source источник


Ответы (2)


Для slf4j-api требуется пакет org.slf4j.impl. Этот пакет включен во все реализации slf4j, такие как slf4j-simple, slf4j-logback и т. д.

Для пакетов реализации требуется пакет org.slf4j, полученный из артефакта API. Есть перекрестная ссылка. Это может работать только по той причине, что реализации представляют собой комплекты фрагментов API. Когда реализация устанавливается вместе с API, у них будет общий загрузчик классов, и они будут разрешаться вместе. Оба их требования будут удовлетворены.

Вкратце: вы должны выбрать одну из реализаций и установить ее. Например: slf4j-простой.

Вы должны использовать ту же версию API и реализацию, чтобы удовлетворить их «перекрестное требование».

person Balazs Zsoldos    schedule 26.07.2015

Ваша библиотека содержит следующие 3 пакета (ссылка):

  1. org.slf4j
  2. org.slf4j.helpers
  3. org.slf4j.spi

но у вас должна быть дополнительная библиотека, которая будет содержать пакет org.slf4j.impl.

Также из файла манифеста видно, какие пакеты экспортируются (Export-Package) (они видны другим бандлам) и какие пакеты импортируются (Import-Package) (они должны быть доступны для данного бандла). Иногда данный пакет должен быть из пакета с правильной версией.


Если вы не можете найти правильный пакет, возможно, вам поможет эта страница.

person lukaslew    schedule 25.07.2015
comment
ebr.springsource.com/repository/app/bundle/version/ Здесь я могу скачать пакет, но он тоже не запускается. Итак, я просмотрел исходный код этого пакета. и пакет impl оттуда исключен. - person David Mkrtchyan; 26.07.2015
comment
вам следует дополнительно загрузить одну из следующих библиотек: ebr.springsource. com/repository/app/search?query=org.slf4j.impl Каждый из них экспортирует пакет org.slf4j.impl. - person lukaslew; 26.07.2015