2014-10-29 63 views
1

我想添加充氣城堡作爲服務提供商到我的Java產品運行在Apache卡拉夫。 當我試圖啓動其中進口充氣城堡,我得到一個錯誤信息捆綁綁定不會啓動時,彈性城堡進口

java.lang.Exception的:無法啓動捆綁MVN:com.xxx.yyy.zzz/docsservice/1.0.0-SNAPSHOT /戰爭功能server-docs-1.0.0-SNAPSHOT:綁定文檔中未解決的約束[245]:無法解析245.0:缺少需求[245.0] osgi.wiring.package; (&(osgi.wiring.package = org.bouncycastle.jce.provider)(version> = 1.51.0)) at org.apache.karaf.features.internal.FeaturesServiceImpl.startBundle(FeaturesServiceImpl.java:472)

在pom文件中,我導入了包org.bouncycastle.jce.provider,並將bouncycastle添加爲依賴項。 另外,我在此頁面上描述的所有變化, http://karaf.apache.org/manual/latest/users-guide/security.html,見下文

  1. 我把罐子供應商在lib/ext目錄
  2. 我修改等/ config.properties配置文件中添加以下屬性 org.apache.karaf.security.providers = XXX,YYY

org.apache.karaf.security.providers = org.bouncycastle.jce.provider.BouncyCastleProvider

  • 我提供了來自系統包中這些提供程序的類的訪問權限,以便所有包都可以訪問這些類。
  • org.osgi.framework.bootdelegation = ...,org.bouncycastle *

  • 在一些論壇上,我發現了另一個建議,所以我修改 * org.osgi.framework.system.packages.extra = *在config.properties以及和我說這裏包從出口BouncyCastle的
  • 儘管如此,我無法成功加載該包。我看着所有由karaf裝載的捆綁包,而他們都沒有出口充氣城堡包。 我在這裏錯過了什麼?我怎樣才能使捆綁開始?

    回答

    2

    通過將軟件包添加到啓動委派中,您可以像java。*包那樣使用它。對於這些你不需要一個導入包。因此,一種方法是在您的軟件包中刪除Import-Package。你應該去探索一下,如果你沒有啓動委派就可以工作。

    請嘗試刪除引導代表團和包添加到

    org.osgi.framework.system.packages.extra = org.bouncycastle.jce.provider 
    

    這增加了包裝的包裝系統捆綁出口。它應該被連接到你的包。

    +0

    我已經將org.bouncycastle.jce.provider添加到了packages.extra(參見上面的我的第4部分)。 從pom文件的導入部分刪除org.bouncycastle.jce.provider解決了我的問題。謝謝! 我還有一個問題。我不明白你的意思是「它應該被連接到你的包」。你能詳細解釋一下嗎? – Dan 2014-10-29 17:32:58

    +0

    當軟件包從安裝狀態變爲已解決狀態時,OSGi框架連接軟件包的類加載器。 Import-Package中的所有包都將連線到一個導出匹配包的包。只有這樣才能成功使用該捆綁包。 – 2014-10-29 18:35:09