2012-03-29 199 views
2

对于Apache Karaf的人来说,这里有一些真正的noob(这是我第一次向Karaf发布一个包)。我正在部署一个使用大量org.apache.commons。*捆绑包的捆绑软件。当我部署我的软件包然后尝试启动它时,Karaf抛出一个关于找不到org.apache.commons.pools的错误。我做了一些谷歌搜索和跑了以下几点:Apache Karaf和Apache Commons Bundles

osgi:install mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-pool 

这安装了缺失的包,我打了下一个。虽然我明白所需的软件包没有安装到OSGI容器中,但有一些问题需要澄清。

  • 从我的理解我正在安装的包是使用某种servicemix包。 所以我想知道这是需要的,不能我只是添加一个org.apache.commons.pool包而不是一个完整的servicemix包?
  • 当我错过了一个包如何找出使用哪个maven url。例如说,我需要一个foobar包如果我不知道url的话,我该如何去添加这个包?现在我无法启动我的软件包,因为找不到package = org.apache.log。那么我怎么知道如何添加这个?
  • 包和功能之间的区别?

希望问题已经够清楚了。我正在与卡拉夫取得进展,只需要澄清这些问题。

回答

10

不是所有的Java“jar”都是OSGi兼容的,它们需要有OSGi bundle manifest

我遵循这个步骤时,我需要从控制台添加一个依赖:

  • mvnrepository.com
  • 尝试搜索库安装它是这样的:

    安装MVN:[组-id]/[artifact-id]/[version]

  • 如果它不是OSGi库,那么我在SpringSource上搜索它。在这个版本库中,所有的软件包都是OSGi,但是它们有过时的版本是正常的。

  • 我最后的选择是使用Karaf wrap deployer,它可以让你部署非OSGi包。检查user guide

而关于功能,一个功能只是一组软件包。详情请阅读this post

+0

如果您使用karaf从karaf控制台运行此程序:bundle:install mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-lang/2.4_6 – QIKHAN 2016-10-27 16:58:03