我试图在Felix(无Karaf)中添加一个新的OSGI捆绑包作为ActiveMQ客户端(消息发件人)。
ActiveMQ客户端在非OSGI环境中可以很好地工作。但是,当我在Felix中使用相同的代码(进行一些小的修改)时,它将引发此错误:
org.osgi.framework.BundleException:无法解决 com.packtpub.felix.bookshelf-inventory-impl-mock [7](R 7.3):丢失 要求[com.packtpub.felix.bookshelf-inventory-impl-mock [7](R 7.3)] osgi.wiring.package; (&(osgi.wiring.package = javax.jms)(版本> = 1.1.0))未解决 要求:[[com.packtpub.felix.bookshelf-inventory-impl-mock [7](R 7.3)] osgi.wiring.package; (&(osgi.wiring.package = javax.jms)(版本> = 1.1.0))]
非常感谢您的帮助。
答案 0 :(得分:3)
打开邮件包装可以使您的声音清晰明了:
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命名空间。)
(&(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的一部分。您需要找到一个将其导出的捆绑软件(具有正确的版本)。由于您已编译代码,因此您必须已在构建中包含它。找到该捆绑软件,然后将其部署到您的框架中。