0

我是 OSGI 开发的新手,正在努力了解如何最好地处理依赖的 JAR。

即,如果我正在创建一个捆绑包,我可能需要使用一些第 3 方 JAR。当我创建我的包 JAR 以部署到 OSGI 时,显然这些 3rd 方 JAR 不包括在内,因此包将不会运行。

我知道一种选择是将这些 JAR 转换为捆绑包并将它们部署到 OSGI 容器。当我捆绑并尝试部署第三方 jar 时,它会为他们自己的依赖 jar 引发错误,并且这些依赖是无穷无尽的,无法实现。

什么是最好的解决方案?

——阿努拉格

4

4 回答 4

0

如果您是 osgi 的初学者,那么我不建议您自己捆绑更大的库。通常不仅需要定义一些导入和导出标头,而且会变得非常困难。幸运的是,许多库都以捆绑包的形式提供。

如果原始 lobs 还不是捆绑包,那么您可以在 maven Central 中搜索来自 servicemix 捆绑包的捆绑版本。

使用 apache karaf 通常也有很大帮助。许多库(如 activemq、cxf、camel、openjpa、...

在最坏的情况下,您可以将 lib 和所有 deps 嵌入到您自己的 jar 中。如果您尝试在包之间共享一些类,这往往会导致类加载问题。

你的问题是什么库?

于 2013-10-05T22:38:36.913 回答
0

最后我解决了第三方 jar 问题,实际上我伪造了在我的 POM.xml 文件中添加以下标签 <_exportcontents>*

我的问题已经解决,感谢大家的支持并给了我宝贵的线索。

于 2013-10-11T04:54:39.347 回答
0

您提到的许多库(log4j、quartz、dom4j)已经被 Springsource 转换为 OSGi 包。您可以在Springsource Enterprise Bundle Repository中找到它们。所有 Hibernate 库 > 4.2 也是 osgified。

于 2013-10-08T07:06:45.927 回答
0

你有三个选择:

  1. 在一些预先制作的包中找到库(Springsource RepositoryEclipse Orbit Repository等)
  2. 将库作为外部库包含到您的包中(创建一个目录库,将您的 jar 文件复制到那里,并从 中的Bundle-Classpath元素引用它们MANIFEST.MF
  3. 将库转换为 OSGi 包(例如使用bnd wrap转换器,此处为示例)
于 2013-10-08T07:21:43.267 回答