我有迁移项目。目前,版本是CQ5.6。 Maven构建正在成功部署。但是,在构建之后,osgi中的bundle显示处于已安装状态。导致问题的两个依赖项。
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 statement。
<Import-Package>
....
....
org.apache.felix.shell
</Import-Package>
之后,构建成功,但由于
,bundle处于已解决状态org.apache.felix.shell,version=[1.0,2) -- Cannot be resolved
任何建议,为什么会导致问题。
答案 0 :(得分: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
捆绑包。
答案 1 :(得分:1)
org.apache.felix.shell,version=[1.0,2) -- Cannot be resolved
意味着你试图在AEM中使用这些felix包。 然而 - AEM中没有OSGi捆绑包可以导出这些包。
您可以从maven repo下载该捆绑包并将其上传到AEM Felix console并使用它。
或者您可以将其创建为父pom依赖项作为模块之一,并与项目jar一起包装并使用它。
要使用AEM Dependency finder来验证任何包和依赖项的可用性。
答案 2 :(得分:0)
您安装的shell jar仍未解析,因为它依赖于某些可能不存在的jar。您需要找到所有依赖项的深度并解决它们。