NetBeans,Maven,Felix,OSGI:无法解决缺少的要求

时间:2017-08-22 10:48:53

标签: java maven netbeans osgi apache-felix

我已经解决了我在尝试使用NetBeans 8.2中的Maven OSGi Bundle项目模板构建具有依赖关系的OSGi包时遇到的问题。我将Apache Felix集成为OSGi运行时容器。

我上传了一个包含2个Maven OSGi捆绑项目的ZIP file FirstModule SecondModule 。后者依赖前者。这两个项目都在NetBeans IDE内部编译,我可以毫无问题地运行 FirstModule 项目 - 它在控制台中输出所需的消息。

但是,当我尝试运行 SecondModule 项目时,出现此错误:

  

主:

     

[propertyfile]更新属性文件:   C:\源\的OSGi \ SecondModule \目标\ run.properties

     

[java] org.osgi.framework.BundleException:bundle com.slade.osgi.SecondModule [3]中未解决的约束:无法解析3.0:   缺少要求[3.0] osgi.wiring.package;   (及(osgi.wiring.package = com.slade.osgi.firstmodule)(版本> = 1.0.0)((版本>!= 2.0.0)))

     

[java] org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:3826)

     

[java] org.apache.felix.framework.Felix.startBundle(Felix.java:1868)

     

[java] org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1191)

     

[java] org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:295)

     

[java] java.lang.Thread.run(Thread.java:748)

我已经突出显示了指示问题的消息部分。通过阅读StackOverflow以及互联网上其他地方的答案,我逐渐明白问题是 FirstModule 捆绑包尚未安装并在Felix OSGi容器中启动时选择 SecondModule 来运行。我已通过手动将两个捆绑包安装到Karaf实例中来确认此问题。当Karaf中未安装 FirstModule 捆绑包时, SecondModule 捆绑包会抛出该错误。当在Karaf中安装 FirstModule 捆绑包时, SecondModule 捆绑包按预期工作(仅在Karaf内部)。

因此,这让我相信我需要以某种方式在运行时将此依赖项安装到Felix中。但是,我不知道该怎么做。我希望如果将依赖项设置为“已提供”或“运行时”,Felix将在本地Maven存储库中查找已在构建/运行时安装 FirstModule 并自动解决依赖关系。但事实并非如此。

任何人都可以提供任何进一步的解释或可能的解决方案吗?

提前致谢!

0 个答案:

没有答案