OSGI - 处理捆绑包所需的第三方 JAR

2022-09-01 01:56:20

我刚刚开始OSGI开发,并且正在努力了解如何最好地处理依赖的JAR。

也就是说,如果我正在创建一个捆绑包,那么我可能需要使用一些第三方JAR。当我创建捆绑JAR以部署到OSGI时,显然这些第三方JAR不包括在内,因此捆绑包将无法运行。

我知道一种选择是将这些JAR转换为捆绑包,并将它们部署到OSGI容器中。但是,如果它们只需要由一个捆绑包使用,这似乎并不理想。

最好的解决方案是什么?JAR是否可以嵌入到捆绑JAR中,如果是这样,这是一种合理的方法吗?


答案 1

您可以通过将第三方 jar 添加到捆绑 jar 文件的根目录中,然后将捆绑包类路径标头添加到捆绑包的清单中,在捆绑包中包含第三方 jar,例如:

Bundle-ClassPath: .,my3rdparty.jar

如果要将第三方 jar 放入子目录,请在不使用标题 ./ 的情况下指定路径,例如

Bundle-ClassPath: .,lib/my3rdparty.jar # (not ./lib/my3rdparty.jar)

答案 2

我几乎总是将每个罐子单独捆绑在一起。OSGi本身是用于模块化的,你不这样做就把整个系统当成荒谬的。

如果你想将 JAR 转换为捆绑包,你可能想要使用 Peter Kriens 编写的 BND 工具。但首先,我建议您在SpringSource Enterprise Bundle Repository中查找捆绑包,如果他们还没有为您完成工作。


推荐