Eclipse 中的 OSGi 无法解析依赖关系

Posted

技术标签:

【中文标题】Eclipse 中的 OSGi 无法解析依赖关系【英文标题】:OSGi in Eclipse cannot resolve dependencies 【发布时间】:2011-12-03 01:54:43 【问题描述】:

我正在开发一个 OSGi/Equinox 插件,但似乎无法让 Hibernate 依赖项工作。我已经使用 Eclipse 将 Hibernate 依赖项添加到我的 POM 中,并且它已成功下载它们。

但是,我根本无法在任何项目类中使用它们——就好像它们甚至没有被添加为依赖项一样。

为什么我不能简单地将 Hibernate 添加为依赖项,然后在我的代码中使用它? 缺少什么?

我知道这应该是非常直接的,我认为我在某个地方遗漏了一些东西。一个小指针将不胜感激。

干杯

【问题讨论】:

【参考方案1】:

我假设您使用的是 Eclipse 插件开发环境 (PDE)?如果是这样,您需要将包 org.hibernate.cfg(可能还有其他)添加到您的包的导入包中(转到清单编辑器的依赖项选项卡)。

PDE 的方法是只允许您的代码查看您首先明确导入的包。 Bndtools 等其他工具允许您的代码查看构建路径上的所有包,然后根据您实际使用的内容生成 OSGi Import-Package 语句。

【讨论】:

感谢您的回复。没有 org.hibernate 包出现在 PDE 中的 Imported Packages 下,并且在手动添加时显示错误,所以我猜我需要先使用 BND 创建一个 Hibernate 包装? Neil,感谢您为我指明了正确的方向,我最终需要使用 BndTools 来创建 Hibernate 包。虽然学习曲线相当陡峭,但我仍然有一些与 Hibernate 相关的异常(即我的域类的 ClassNotFoundException),尽管我离目标更近了。谢谢!【参考方案2】:

添加到您的 pom 后,您将其构建为 mavne 项目还是 eclipse 项目? 我的意思是先构建为;

mvn 全新安装

然后创建一个eclipse项目

mvn eclipse:eclipse -o

然后将其导入工作区..您将能够使用库

【讨论】:

我使用的是 Eclipse 而不是直接使用 Maven,它也需要是一个 Eclipse 插件项目。 Maven 在查找和下载依赖项时没有任何问题,但是该插件似乎无法在任何源文件中解析它们。

以上是关于Eclipse 中的 OSGi 无法解析依赖关系的主要内容,如果未能解决你的问题,请参考以下文章

在集成 Maven、Tycho 和 Eclipse 时处理非 OSGi 依赖项

Plugin.xml 与 OSGi 规范有何关系?

无法运行具有Maven依赖关系的OSGi捆绑软件

OSGI中的service依赖关系管理

登录 Eclipse/OSGi 插件

如何在 Eclipse PDE 中表达项目间依赖关系