有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带有ExportPackage的java Eclipse OSGi片段

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

  • 捆绑包A(导入B.B包,导入B1.B1包;导出A.A包)
  • 主机捆绑包B(导出B.B包)
  • 片段B1(出口B1.B1包装)
  • 片段B2(导入A.A包)

在eclipse中(我使用了oxygen,但在neon3上出现了相同的错误),从A导入B1时出现了一个错误。无法解析数据包。我读到使用行Eclipse-ExtensibleAPI: true(Eclipse Help Page)解决了这个问题,它告诉PDE允许片段导出额外的包(在运行时总是允许片段这样做,设置只是PDE的一个信息)

但在使用此设置后,eclipse抱怨我的依赖项中有一个循环在运行时不存在,因为片段B2依赖于包a

处理这些问题的正确方法是什么


共 (1) 个答案

  1. # 1 楼答案

    What is the correct way to handle such problems?

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

    具有以下特性的模型:

    • API包A(导出包A.A包)
    • API包B(导出包B.B包,B1.B1包)
    • Impl Bundle A(导入所有三个包,提供A.apapackage.AService)
    • Impl Bundle B(导入B.B包,提供B.B包.B服务)
    • Impl Bundle B1(导入B1.B1包,提供B1.b1pacakge.B1服务)
    • Impl Bundle B2(导入A.A包)

    也许对你更有用