2017-04-14 74 views
0

我有移植項目。目前版本爲CQ5.6。 Maven構建正在成功部署。但是,在構建之後,osgi中的軟件包顯示爲已安裝狀態。導致該問題的兩個依賴關係。OSGI捆綁軟件依賴問題

org.apache.felix.shell,version=[1.0,2) -- Cannot be resolved 

在構建過程中,我收到如下錯誤。

錯誤

[INFO] --- maven-bundle-plugin:2.3.4:bundle (default-bundle) @ myPRJ-taglib --- 
[ERROR] Error building bundle com.mypack.deewealth:myPRJ-taglib:bundle:1.0.0-SNAPSHOT : Unresolved references to [org.apache.felix.shell] by class 
(es) on the Bundle-Classpath[Jar:dot, Jar:OSGI-INF/lib/recaptcha4j-0.0.8-kohsuke-1.jar, Jar:OSGI-INF/lib/commons-io-2.1.jar, Jar:OSGI-INF/lib/commons- 
lang-2.4.jar, Jar:OSGI-INF/lib/crx-packagemgr-1.0.22.jar, Jar:OSGI-INF/lib/squeakysand-osgi-0.4.0.jar, Jar:OSGI-INF/lib/jsoup-1.6.1.jar, Jar:OSGI-INF/ 
lib/stax-api-1.0-2.jar, Jar:OSGI-INF/lib/org.apache.sling.settings-1.1.0.jar, Jar:OSGI-INF/lib/cq-compat-runmode-0.2.0.jar, Jar:OSGI-INF/lib/commons-c 
ollections-3.2.1.jar, Jar:OSGI-INF/lib/squeakysand-jsp-0.4.0.jar, Jar:OSGI-INF/lib/squeakysand-commons-0.4.0.jar]: [org/apache/sling/settings/impl/Run 
ModeCommand.class] 

爲了解決這個我添加下面扶養在pom.xml中,我們在 依賴

<dependency> 
    <groupId>org.apache.felix</groupId> 
    <artifactId>org.apache.felix.shell</artifactId> 
    <version>1.4.2</version> 
    <scope>provided</scope> 
</dependency> 

添加在import語句。

<Import-Package> 
    .... 
    .... 
    org.apache.felix.shell 
</Import-Package> 

之後,構建成功,但捆綁在因爲

org.apache.felix.shell,version=[1.0,2) -- Cannot be resolved 

任何建議,解決國家爲什麼這是造成問題的原因。

回答

1

org.apache.felix.shell,version=[1.0,2) -- Cannot be resolved 表示您試圖在AEM中使用這些felix包。 但是 - AEM中沒有導出這些軟件包的OSGi軟件包。
您可以從maven repo下載該軟件包並將其上傳到AEM Felix console並使用它。

或者你可以創建它作爲你的父pom依賴作爲模塊之一,幷包裝你的項目jar並使用它。

AEM Felix

爲了veify任何包的可用性和依賴使用AEM Dependency finder

AEM Dependency Finder

2

我不知道CQ,但我可以解釋爲什麼會發生這種情況。由於缺少依賴關係,您在構建時發生錯誤。你通過添加固定你的構建的依賴來正確地解決它。幕後發生的事情是,您的軟件包已根據所需信息(進口)org.apache.felix.shell,version=[1.0,2)進行更新,並且該軟件包將在運行時由其他軟件包提供。

然後在運行時解析程序得到了這些信息並試圖找到一個捆綁包,它提供(輸出)org.apache.felix.shell,version=[1.0,2)包。它無法找到一個,所以決議失敗,你的捆綁被留在installed(我相信這就是你的意思是寫在你的最後一句resolved狀態!

爲了解決這個問題,您需要確保org.apache.felix.shell,version=[1.0,2)包在運行時可用。我不知道CQ以及如何在其中安裝捆綁包,但由於您可以安裝自己的捆綁軟件,我假設您也可以以相同的方式安裝org.apache.felix.shell捆綁包。

0

您已經安裝了殼罐子仍然沒有得到解決,因爲它依賴於一些罐子可能不存在。您需要找到所有依賴關係的深度並解決它們。