You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AEM 6.2中OSGi Bundle无法解析com.day.cq.commons,version=[5.7,6)问题

我之前在维护AEM 6.2项目时也碰到过这个一模一样的OSGi Bundle依赖解析问题,给你几个经过实践验证的解决方案:

针对AEM 6.2中com.day.cq.commons,version=[5.7,6)依赖无法解析的解决方案
  • 调整Maven依赖版本范围
    这个问题的核心原因是:AEM 6.2中com.day.cq.commons的版本已经升级到6.x系列,但你的Bundle依赖声明里的版本范围[5.7,6)明确排除了6.x及以上版本,导致OSGi框架无法找到匹配的包。
    你需要修改项目的pom.xml,把该依赖的版本范围放宽:

    <dependency>
        <groupId>com.day.cq.commons</groupId>
        <artifactId>cq-commons</artifactId>
        <version>[5.7,7)</version>
        <scope>provided</scope>
    </dependency>
    

    这样就能覆盖AEM 6.2提供的6.x版本了。

  • 检查AEM实例中目标Bundle的状态
    登录AEM的OSGi控制台(路径:/system/console/bundles),搜索com.day.cq.commons:

    • 确认它的版本是6.x(比如适配AEM 6.2的6.2.0版本)
    • 检查Bundle状态是否为Active,如果是Installed或Resolved状态,手动点击启动按钮激活它
    • 如果版本不对,可能需要重新安装AEM 6.2对应的基础包来修复
  • 修正MANIFEST.MF中的导入声明
    如果你的自定义Bundle是手动配置MANIFEST.MF(而非通过Maven自动生成),检查Import-Package中的声明:
    把原来的:

    Import-Package: com.day.cq.commons;version="[5.7,6)",
    

    修改为:

    Import-Package: com.day.cq.commons;version="[5.7,7)",
    

    确保版本范围包含AEM 6.2提供的版本。

  • 检查Maven Bundle插件配置
    如果你使用maven-bundle-plugin生成MANIFEST,确保插件没有硬编码过窄的版本范围。可以在插件配置中指定宽松的范围规则,让插件根据依赖自动生成合适的导入声明:

    <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <configuration>
            <instructions>
                <Import-Package>
                    com.day.cq.commons;version="[5.7,7)",
                    *
                </Import-Package>
            </instructions>
        </configuration>
    </plugin>
    

内容的提问来源于stack exchange,提问作者Raj Kumar Samala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:20:31