Eclipse OSGi 包需要另一个包的片段

Posted

技术标签:

【中文标题】Eclipse OSGi 包需要另一个包的片段【英文标题】:Eclipse OSGi bundle reqiure another bundle's fragment 【发布时间】:2011-10-31 18:25:38 【问题描述】:

这可能是一个简单的问题,但让我困惑了一段时间。

我正在开发一个依赖于 google guice 的 OSGi 包。 Google guice 有一个主包和几个片段,如辅助注入片段。 在我的包中,我使用了辅助注入片段和从该片段导出的类。

但是在 Eclipse 中,我只能设置对另一个 bundel(在本例中为 guice 包)的包依赖,但不能直接在片段(辅助注入)上设置包依赖,因此 Eclipse 抱怨找不到从片段导出的类。

我怎样才能依赖包的片段?

【问题讨论】:

【参考方案1】:

对片段的导出包使用Import-Package 依赖项。

事实上,您应该对所有依赖项使用Import-Package,并尽可能避免使用Require-Bundle

【讨论】:

不幸的是,有很多情况是无法避免的。例如。如果你正在做使用扩展点的 Eclipse 插件,那么你仍然需要Require-Bundle 嗨,托尼。在使用 Eclipse 扩展点时,您确实不需要需要 Require-Bundle 依赖项。实际上你不需要任何依赖,除非你需要实现一个 API 或接口。不幸的是,PDE 工具建议您添加一个 Require-Bundle,但这不是必需的。 我的立场是正确的。即使没有声明它也可以工作......谢谢。 但问题是当我尝试使用 PDE 的编辑器在 MAINFEST.MF 文件中添加导入的包时,来自 fagemnt 的包没有显示在列表中! Wudong - 您可能还需要将Eclipse-ExtensibleAPI: true 添加到片段主机(即Guice 本身)。请注意,这是 PDE 使用的纯工具头文件,而不是 Eclipse 或 OSGi 运行时头文件。见help.eclipse.org/indigo/…【参考方案2】:

除了将所需的包添加到 Import-Package 之外,您可能还需要将 Eclipse-ExtensibleAPI: true 添加到清单中以防止 PDE 中出现未解决的依赖错误。

【讨论】:

以上是关于Eclipse OSGi 包需要另一个包的片段的主要内容,如果未能解决你的问题,请参考以下文章

OSGi:导出一个包而不导出同一个包中的几个类

如何配置OSGi环境以便可以从EclipseStarter类中使用它?

在 Eclipse 中编译和运行 OSGI 应用程序

如何把普通jar包转成osgi 包

基于 Eclipse 功能的启动无法解决依赖关系

如何让 Eclipse 了解 maven 存储库中的 OSGI 包(本地 &| 远程)