【问题标题】:Backporting OSGI DS component to OSGI R4将 OSGI DS 组件向后移植到 OSGI R4
【发布时间】:2016-11-15 07:19:06
【问题描述】:

我有一个为 Apache Karaf 4.0.5 开发的组件。然而,事实证明它需要部署在 glassfish 4 上,它基于旧版本的 Felix。我在尝试部署时收到此消息:

missing requirement [319.0] osgi.extender; (&(osgi.extender=osgi.component)(version>=1.3.0)(!(version>=2.0.0)))

但是,我的 pom 文件没有显示对 osgi.component 的任何显式依赖。我想我一定使用了某些 OSGI R5(或 R6?)特定功能,但我不知道哪个会导致此错误。

如何说服 glassfish 接受我的捆绑包,或者更改捆绑包的构建/pom,以便在尝试使用依赖于 R5 或更高版本的 OSGI 功能时收到警告?

【问题讨论】:

    标签: glassfish osgi declarative-services


    【解决方案1】:

    您可能正在使用最新版本的 bnd 来生成您的包及其元数据。当您的捆绑软件包含 DS 组件并且您需要 DS 1.3 中的一些新功能(例如字段注入)或者您使用的是最新版本的 bnd 时,Bnd 将在 osgi.component 扩展程序(这是 DS)上生成要求。

    您可以使用 bnd 指令禁用捆绑包中需求的生成:

    -dsannotations-options: norequirements

    https://bnd.bndtools.org/instructions/dsannotations-options.html

    【讨论】:

    • 我在 bnd 文档中找不到对此的参考,也无法使其产生任何效果。
    • "bnd docs" 唯一全面的 bnd docs 似乎是源代码
    猜你喜欢
    • 2023-04-02
    • 2015-09-29
    • 1970-01-01
    • 2013-12-27
    • 2020-12-31
    • 1970-01-01
    • 2020-06-08
    • 2016-05-15
    • 1970-01-01
    相关资源
    最近更新 更多