如何在部署OSGI包

时间:2016-02-22 23:53:55

标签: java maven glassfish osgi

我正在尝试在glassfish 4.1.1中部署一个简单的OSGI包(hello world),但是我收到了以下错误:

Infos:   org.osgi.framework.BundleException: 
Unresolved constraint in bundle com.mycompany.MavenHelloServiceImpl [324]:
  Unable to resolve 324.0: missing requirement [324.0] 
    osgi.wiring.package; (osgi.wiring.package=com.mycompany.mavenhelloserviceapi)
at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:3974)

我不知道如何修复丢失的包,我已经将“com.mycompany.mavenhelloserviceapi”定义为捆绑MavenHelloServiceImpl中的依赖项,它存在于捆绑包MavenHelloServiceImpl的dependencies文件夹中 知道如何解决这个错误吗?!

2 个答案:

答案 0 :(得分:1)

com.mycompany.mavenhelloserviceapi作为pom.xml中的依赖项是不够的:pom是关于编译时依赖项的。你在这里看到一个关于缺少运行时依赖性的问题。

您应该在容器中安装com.mycompany.mavenhelloserviceapi

答案 1 :(得分:0)

您应该将包含com.mycompany.mavenhelloserviceapi的项目修改为捆绑项目并显式导出此包。现在将此捆绑包与您的hello world bundle一起部署。

或者,您可以使用Pax Wrap将包含com.mycompany.mavenhelloserviceapi的jar部署到glassfish而无需修改项目。