访问osgi bundle的lib jar

时间:2012-04-18 16:58:27

标签: java osgi

我正在开发一个需要org.apache.http包的osgi包。目标平台有一个httpcommponents包,它有这些包,因为我已经看到它们,当我在bundle的清单中声明这些依赖项时,eclipse会自动在插件依赖列表中添加bundle。问题是我在import org.apache.http时遇到编译错误。如果我探索捆绑包,它只在包org.apache.http中有一个Activator,并在lib文件夹中包含我需要的包的jar。我该如何访问这些包?启动激活器并在运行时获取我需要的类?一个解决方案是手动将org.apache.http jar添加到我的bundle的构建路径中。对不起,如果这是一个愚蠢的问题......

由于

2 个答案:

答案 0 :(得分:1)

关于构建问题,您可能需要查看this question。谁建立了你的目标平台就是采取了错误的方法,这就是造成你悲伤的原因。

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

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

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

答案 1 :(得分:0)

当您尝试启动捆绑包时,您基本上需要确保您的OSGi容器运行org.apache.http捆绑包。有几种方法可以做到这一点。您可以手动将jar复制到deploy目录中,也可以使用OSGi Bundle Repository (OBR)之类的东西。使用OBR,当您安装捆绑包时,也会下载并安装所有依赖项。

您可以使用maven OSGi plugin来托管自己的OBR。这将读取捆绑包的清单文件,并使用该信息创建本地OBR。然后,您可以从控制台使用OBR来安装捆绑包及其所有依赖项。