我是OSGI开发的新手,我正在努力了解如何最好地处理依赖JAR。
即。如果我正在创建一个捆绑包,那么我可能需要使用一些第三方JAR。当我创建我的捆绑JAR以部署到OSGI时,显然这些第三方JAR不包括在内,因此捆绑包不会运行。
我知道一个选项是将这些JAR转换为捆绑包并将它们部署到OSGI容器中。当我捆绑并尝试部署第三方jar时,它会为自己的依赖jar抛出错误,这些依赖是无穷无尽的,无法实现。
最佳解决方案是什么?
- Anurag
答案 0 :(得分:0)
如果您是osgi的初学者,那么我不建议您自己捆绑更大的lib。通常不仅需要定义一些导入和导出标头,而且变得非常困难。幸运的是,很多lib都可以作为捆绑包使用。
如果原始lobs还不是捆绑包,那么您可以在maven central中搜索servicemix捆绑包中的捆绑版本。
使用apache karaf通常也是一个很大的帮助。有很多libs的预定义deps的karaf功能,如activemq,cxf,camel,openjpa,......
在最坏的情况下,您可以将lib和所有deps嵌入到自己的jar中。如果您尝试在bundle之间共享某些类,这往往会导致类加载问题。
你的案子有什么问题?
答案 1 :(得分:0)
你提到的很多库(log4j,quartz,dom4j)已经被Springsource转换为OSGi包。您可以在Springsource Enterprise Bundle Repository中找到它们。所有Hibernate库> 4.2也是渗透的。
答案 2 :(得分:0)
您有三种选择:
Bundle-Classpath
中的MANIFEST.MF
元素引用它们)bnd wrap
转换器,例如here)答案 3 :(得分:0)
最后我解决了第三方jar问题,实际上我伪造了在我的POM.xml文件中添加以下标记 < _exportcontents&GT *
我的问题是解决,感谢大家的支持,并给我提供了宝贵的线索。