2012-03-29 101 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