首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OSGI未能使用javax.ws.rs启动包“缺少需求”

OSGI未能使用javax.ws.rs启动包“缺少需求”
EN

Stack Overflow用户
提问于 2017-04-28 02:21:26
回答 1查看 1.6K关注 0票数 1

我一直在尝试制作一个OSGI包。我已经将其分解为一个人为的最小化示例,其中包含一个使用几个注释的类的单个包工作区。在通过Eclipse运行包时,解析javax.ws.rs包时会出现错误。我将javax.ws.rs-api 2.0.1添加到cnf项目中,并将javax.ws.rs-api-2.0.1.jar添加到包的构建路径中。

当我运行这个包时,我会得到以下错误:

好了!无法解决捆绑:[ myprovider -1.0.0.201704280130 org.osgi.framework.BundleException:无法解决myprovider 1:缺失需求[myprovider 1] osgi.wiring.package;未解决的需求:[myprovider 1] osgi.wiring.package;(&(osgi.wiring.package=javax.ws.rs)(version>=2.0.0)(!(version>=3.0.0)))] ]!启动包myprovider失败-1.0.0.201704280130,异常无法解决myprovider 1:缺少需求[myprovider 1] osgi.wiring.package;未解决的需求:[myprovider 1] osgi.wiring.package;(&(osgi.wiring.package=javax.ws.rs)(version>=2.0.0)(!(version>=3.0.0)))]

我的捆绑包的bnd.bnd是:

代码语言:javascript
复制
-buildpath: \
    javax.ws.rs-api;version=2.0,\
    osgi.cmpn,\
    osgi.core
-runrequires: \
osgi.identity; filter:='(osgi.identity=org.apache.felix.gogo.command)',\
osgi.identity; filter:='(osgi.identity=org.apache.felix.gogo.runtime)',\
osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.shell)'
-runfw: org.apache.felix.framework;version='[5.4.0,5.4.0]'
-runee: JavaSE-1.8
Export-Package: myprovider

我最初想做的事情和这个问题几乎是一样的:

OSGi bundle not started : missing requirement

但是,解决这个问题的方法我已经在我的bnd文件中有了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-28 05:52:33

您应该将bnd.bnd文件拆分为两个文件。

  1. bnd.bnd定义了构建单个包的规则。因此,构建路径以及像这样的调优设置都属于这里。
  2. app.bndrun或类似的。您至少需要定义一个索引,然后在那里运行。Run需要量应该包括您的用户包。

为了使您的包至少解决问题,还需要向索引中添加一个jaxrs api包。不过,这还不够。您还需要jaxrs实现,还需要发布rest服务。有一些方法可以实现这一点。其中一次是CXF-DOSGi

有一个使用bnd构建包的REST示例

还有指数bndrun档案。bndrun还包括rest示例,即使它在soap示例中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43670929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档