gpt4 book ai didi

java - 带有导出包的 Eclipse OSGi 片段

转载 作者:行者123 更新时间:2023-11-30 06:37:12 24 4
gpt4 key购买 nike

我有两个 bundle ,其中一个是两个片段的主机 bundle 以及该 bundle /片段之间的以下依赖关系。

  • bundle A(导入 B.bpackage、导入 B1.b1package;导出 A.apackage)
  • 主机包 B(导出 B.bpackage)
  • 片段 B1(导出 B1.b1 包)
  • 片段 B2(导入 A.apackage)

在 Eclipse 中(我使用氧气,但在 neon3 上出现同样的错误),存在从 A 到 B1.b1package 的导入无法解决的错误。我使用 Eclipse-ExtensibleAPI: true 行 (Eclipse Help Page) 读到了这一点通过告诉 PDE 允许片段导出附加包来解决此问题(在运行时始终允许片段执行此操作,该设置只是 PDE 的信息)

但是使用此设置后,Eclipse 会提示我的依赖项中存在循环,该循环在运行时不存在,因为片段 B2 依赖于 bundle A...

处理此类问题的正确方法是什么?

最佳答案

What is the correct way to handle such problems?

从 OSGi 的角度来看,正确的做法实际上是完全分离 API 类型(最好是分成单独的包)并使用 OSGi 服务注册表进行相互通信。这可确保您在包依赖关系图中没有循环,并允许您在知道 API 未更改的情况下轻松发布更新。声明性服务提供了一个简单的、基于注释的注入(inject)模型,PDE 可以为您处理该模型。

模型具有:

  • API Bundle A(导出包 A.apackage)
  • API bundle B(导出包 B.bpackage、B1.b1package)
  • Impl Bundle A(导入全部三个包,提供A.apackage.AService)
  • Impl Bundle B(导入B.bpackage,提供B.bpackage.BService)
  • Impl Bundle B1(导入B1.b1package,提供B1.b1pacakge.B1Service)
  • Impl Bundle B2(导入 A.apackage)

可能更适合您。

关于java - 带有导出包的 Eclipse OSGi 片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45011245/

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