Я пытаюсь добавить новый пакет OSGI в Felix (без Karaf) в качестве клиента ActiveMQ (отправителя сообщений).
Клиент ActiveMQ прекрасно работает в среде, отличной от OSGI. Но когда я использую тот же код (с небольшой модификацией) в Felix, он выдает эту ошибку:
org.osgi.framework.BundleException: Unable to resolve com.packtpub.felix.bookshelf-inventory-impl-mock [7](R 7.3): missing requirement [com.packtpub.felix.bookshelf-inventory-impl-mock [7](R 7.3)] osgi.wiring.package; (&(osgi.wiring.package=javax.jms)(version>=1.1.0)) Unresolved requirements: [[com.packtpub.felix.bookshelf-inventory-impl-mock [7](R 7.3)] osgi.wiring.package; (&(osgi.wiring.package=javax.jms)(version>=1.1.0))]
Любая помощь очень ценится.





Распаковка сообщения дает вам сообщение громко и ясно:
Unable to resolve com.packtpub.felix.bookshelf-inventory-impl-mock[7]
В комплекте 7 (com.packtpub.felix.bookshelf-inventory-impl-mock) есть проблема
(R 7.3): missing requirement
У вас были некоторые обновления, и пакет 7 находится на третьей ревизии. Хотя это не так важно знать :-)
osgi.wiring.package;
Вам не хватает пакета (osgi.wiring.package — это пространство имен OSGi для заголовков Import/Export Package.)
(&(osgi.wiring.package=javax.jms)(version>=1.1.0))
Это фильтр LDAP/OSGi. Давайте распакуем его:
osgi.wiring.package=javax.jms
Ищет посылку javax.jms
version>=1.1.0
И версия должна быть больше или равна 1.1.0
Пакет javax.jms является пакетом Java EE и не является частью JRE. Вам нужно найти пакет, который экспортирует его (с правильной версией). Поскольку вы скомпилировали код, он уже должен быть в вашей сборке. Найдите этот пакет, а также разверните его в своей среде.