【问题标题】:OSGI bundle not updating when more than one export package specified in pom.xml当 pom.xml 中指定了多个导出包时,OSGI 包不更新
【发布时间】:2015-08-18 05:14:13
【问题描述】:

当我在对项目中的源代码进行更改后尝试更新我的 OSGI 包时,更新后看不到任何更改只有当我在我的 pom.xml 中指定多个导出包时 .运行更新时没有产生错误。

我的项目中有两个包

  • com.comp.package.a
  • com.comp.package.b

当我在 pom.xml <Export-Package>com.comp.package.a</Export-Package> 中仅指定一个导出包时,我对源代码所做的任何更改在运行更新后成功包含在包中。但是,当我将第二个包添加到导出 <Export-Package>com.comp.package.a, com.comp.package.b</Export-Package> 时,运行更新后看不到我对源代码所做的任何更改。

谁能解释这里发生了什么?

注意:在我的 pom.xml 中所做的更改总是在更新运行后包含在内,只有对源代码的更改没有被拾取。例如,如果我从<Export-Package> 中添加/减去包,则会获取这些更改。

【问题讨论】:

  • 当您说“运行更新”时,您的意思是“执行 OSGI update 命令”吗?
  • 是的,没错。
  • 您是说捆绑清单标头更新,但不更新捆绑内容?您说您看到“源代码没有任何变化”。这是否意味着您将源代码嵌入到包中,或者您是在调试模式下查看它吗?或者你是在推断来源并没有因为它的行为而改变?
  • 我推断它并没有因为行为而改变。
  • 我明白了。两个export之间有uses:约束吗?

标签: java maven osgi osgi-bundle


【解决方案1】:

请参阅 Peter Kriens' answerHow does OSGi bundle update work?

长话短说:“安装或更新后,您应该始终进行刷新”。

【讨论】:

  • 感谢您的回答。我从根本上理解 OSGi 更新是如何工作的。导出多个包并没有向我明确解释任何与依赖相关的问题,所以我缺少一些东西。
【解决方案2】:

试试这个:

<Export-Package>com.comp.package.a,com.comp.package.b</Export-Package>

不要在包之间放置空间。

看看这个:

http://felix.apache.org/documentation/subprojects/apache-felix-maven-bundle-plugin-bnd.html -> 说明 -> <Export-Package>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多