【问题标题】:OSGI - handling 3rd party JARs and their dependenciesOSGI - 处理 3rd 方 JAR 及其依赖项
【发布时间】:2013-10-12 14:58:31
【问题描述】:

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

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

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

什么是最好的解决方案?

-- 阿努拉格

【问题讨论】:

    标签: java osgi


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      你的问题是什么库?

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          你有三个选择:

          1. 在一些预制捆绑包(Springsource RepositoryEclipse Orbit Repository 等)中查找库
          2. 将库作为外部库包含到您的包中(创建一个目录 lib,将您的 jar 文件复制到那里,并从 MANIFEST.MF 中的 Bundle-Classpath 元素引用它们)
          3. 将库转换为 OSGi 包(例如,使用 bnd wrapconverter,例如 here

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-08-26
            • 1970-01-01
            • 2012-01-25
            • 1970-01-01
            • 2014-09-12
            • 2013-11-02
            • 2015-04-30
            • 1970-01-01
            相关资源
            最近更新 更多