2012-04-18 60 views
3

我正在开发一个需要org.apache.http包的osgi bundle。目标平台有一个httpcommponents软件包,它有这些软件包,因为我在软件包的清单中声明了这些依赖关系时看到它们,eclipse自动将该软件包添加到插件依赖项列表中。问题是当我import org.apache.http时出现编译错误。如果我探索bundle,它只包含org.apache.http包中的Activator,并且在lib文件夹中包含我需要的包的jar包。我怎样才能访问这些软件包?启动激活器并在运行时获得我需要的类?解决方案可以是手动将org.apache.http jar添加到我的包的构建路径。很抱歉,如果这是一个愚蠢的问题...访问osgi bundle的lib jar

感谢

回答

1

你可能想看看this question,关于你的构建问题。谁建立你的目标平台正在采取错误的方法,这是什么导致你的悲伤。

您的目标平台实际上应该使用OSGi versions of the commons libraries。如果OSGi就绪版本不可用,则可以从Springsource bundle repository获取它们。

如果这不是可能性(解决此问题),那么您可以简单地更改您的构建的类路径以包含适当的库。它应该已经在运行时工作,无论。

PS - 这不是一个愚蠢的问题;-)

+0

感谢您的有用信息。最后,我找到了需要使用org.apache.http包的库的完整jar包。该jar包含库所需的所有依赖项,所以我将它包含在我的项目中。 – 2012-04-20 17:02:47

0

你基本上需要确保你的OSGi容器,当您试图启动您的包运行org.apache.http束。有几种方法可以做到这一点。您可以手动将jar复制到您的deploy目录中,或者您可以使用类似OSGi Bundle Repository (OBR)的东西。通过OBR,当你安装一个bundle时,它的所有依赖关系也会被下载和安装。

您可以使用maven OSGi plugin承载您自己的OBR。这将读取你的包的清单文件并创建一个包含该信息的本地OBR。然后,您可以使用控制台中的OBR来安装捆绑软件包,以及它的所有依赖项。

+0

这是一个有点混乱,因为我看到的关系是不列表中,但在我的课的导入代码包被突出显示为错误。这个包被包含,因为我上面描述的是在我的包被启动时运行的,因为我已经勾选了它。即使代码有错误,代码也会运行,但当它尝试执行带错误的行(不在导入行中)时会引发NoClassDefException。 – 2012-04-18 18:30:47