2015-07-25 2 views
0

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

  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?

ответ

0

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

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

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

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


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

+0

http://ebr.springsource.com/repository/app/bundle/version/detail?name=com.springsource.slf4j.api&version=1.5.11&searchType=bundlesByName&searchQuery=slf4j Здесь можно скачать сверток, но также не начинается. Итак, я посмотрел исходный код этого пакета. и там исключается пакет implips. –

+0

вы должны добавить одну из следующих библиотек: http://ebr.springsource.com/repository/app/search?query=org.slf4j.impl Каждый из них экспортирует пакет 'org.slf4j.impl'. – lukaslew

1

Требуется slf4j-api org.slf4j.impl упаковка. Этот пакет входит в каждую SLF4J реализации как SLF4J простые, SLF4J-Logback и т.д.

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

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

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

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