【问题标题】:OSGI failed to start bundle 'missing requirement' using javax.ws.rsOSGI 无法使用 javax.ws.rs 启动捆绑“缺少的要求”
【发布时间】:2017-09-26 00:35:46
【问题描述】:

我一直在尝试制作 OSGI REST 包。我已经将其简化为一个人为的最小化示例,该示例具有单个捆绑工作区和一个使用一些注释的单个类。当我通过 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](R 1.0):缺少要求 [myprovider [1](R 1.0)] osgi.wiring.package; (&(osgi.wiring.package=javax.ws.rs)(version>=2.0.0)(!(version>=3.0.0))) 未解决的要求:[[myprovider [1](R 1.0)] osgi .wiring.package; (&(osgi.wiring.package=javax.ws.rs)(version>=2.0.0)(!(version>=3.0.0)))] ] !无法启动捆绑 myprovider-1.0.0.201704280130,异常 Unable to resolve myprovider [1](R 1.0): missing requirements [myprovider [1](R 1.0)] osgi.wiring.package; (&(osgi.wiring.package=javax.ws.rs)(version>=2.0.0)(!(version>=3.0.0))) 未解决的要求:[[myprovider [1](R 1.0)] osgi .wiring.package; (&(osgi.wiring.package=javax.ws.rs)(version>=2.0.0)(!(version>=3.0.0)))]

我的 bundle 的 bnd.bnd 是:

-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

我最初尝试做的与这个问题几乎相同:

Error implementing a OSGI REST: `OSGi bundle not started : missing requirement`

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

【问题讨论】:

    标签: java rest osgi bnd bndtools


    【解决方案1】:

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

    1. bnd.bnd 定义了构建单个包的规则。所以 buildpath 以及 Import-Packages 等调整设置都属于那里。

    2. app.bndrun 或类似的。您至少需要定义一个索引并在那里运行要求。 runrequires 应该包含你的用户包。

    要使您的捆绑包至少可以解决,您还需要将 jaxrs api 捆绑包添加到您的索引中。但这还不够。您还需要一个 jaxrs 实现,您还需要发布您的休息服务。有一些方法可以实现这一目标。其中一个是CXF-DOSGi

    有一个REST example 使用 bnd 构建捆绑包。

    还有an indexbndrun file。 bndrun 也包括了其余的例子,即使它在soap 例子中。

    【讨论】:

      猜你喜欢
      • 2017-09-28
      • 1970-01-01
      • 2015-07-28
      • 2018-05-10
      • 2019-10-11
      • 1970-01-01
      • 2012-11-15
      • 2019-10-31
      • 2015-07-04
      相关资源
      最近更新 更多