2017-04-14 77 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

您已经安装了壳罐子仍然没有得到解决,因为它依赖于一些罐子可能不存在。您需要找到所有依赖关系的深度并解决它们。