gpt4 book ai didi

java - 如何一次安装并启动 osgi bundle ,其中一个依赖于其他 bundle

转载 作者:行者123 更新时间:2023-12-01 18:07:54 24 4
gpt4 key购买 nike

我有两个 bundle ,即 A 和 B。A 依赖于 B(在 A 的 MANIFEST 中指定为必需 bundle :B)。

现在我一一安装了 A、B 包(通过调用 BundleContext.installBundle)。然后,当我尝试启动 bundle A 时,出现以下错误

org.osgi.framework.BundleException: Could not resolve module: A [140]
Unresolved requirement: Require-Bundle: B; bundle-version="1.0.0"

我从异常中了解到 bundle B 尚未启动(已解决)。现在如何解决这个问题?

解决这个问题的唯一方法是按依赖关系对包进行排序?或者是否有任何选项,例如为 OSGi 运行时指定一个文件夹,以便激活复制到其中的任何捆绑文件?

顺便说一下,我使用的是春分点。

最佳答案

请确保在启动任何个 bundle 之前安装所有个 bundle 。 IE。你需要这样做:

  1. 安装 A,安装 B
  2. 从 A 开始,从 B 开始。

而不是这个:

  1. 安装 A,启动 A
  2. 安装 B,启动 B

在第二种(错误的)场景中,您将收到解析错误,因为 A 依赖于 B,而就 OSGi 而言,B 还不存在。

在第一个(正确的)场景中,当您启动 A 时,OSGi 将计算出它需要解析 A 和 B 才能满足依赖关系。

[顺便说一句,在你的问题中,你似乎从解决开始感到困惑:你说“B 尚未开始(已解决)”。这些是完全不同的事情。 B只需要在启动A之前安装,OSGi会在需要时自动解析。]

关于java - 如何一次安装并启动 osgi bundle ,其中一个依赖于其他 bundle ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34877062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com