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

Maven项目集成AWS SNS时无法解析software.amazon.awssdk.auth.credentials

问题描述

在Maven项目(AEM环境)中集成AWS SNS时,部署代码遇到以下OSGI启动错误:

Could not start bundle aem-myproject.core [622]. Reason: {}. Will retry.
org.osgi.framework.BundleException: Unable to resolve aem-myproject.core [622](R 622.69): missing requirement [aem-myproject.core [622](R 622.69)] osgi.wiring.package; (osgi.wiring.package=software.amazon.awssdk.auth.credentials) Unresolved requirements: [[aem-myproject.core [622](R 622.69)] osgi.wiring.package; (osgi.wiring.package=software.amazon.awssdk.auth.credentials)]
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4368)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2281)
    at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998)
    at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:984)
    at org.apache.sling.installer.core.impl.tasks.BundleStartTask.execute(BundleStartTask.java:97) [org.apache.sling.installer.core:3.9.0.B002]
    at org.apache.sling.installer.core.impl.OsgiInstallerImpl.doExecuteTasks(OsgiInstallerImpl.java:914) [org.apache.sling.installer.core:3.9.0.B002]
    at org.apache.sling.installer.core.impl.OsgiInstallerImpl.executeTasks(OsgiInstallerImpl.java:749) [org.apache.sling.installer.core:3.9.0.B002]
    at org.apache.sling.installer.core.impl.OsgiInstallerImpl.run(OsgiInstallerImpl.java:298) [org.apache.sling.installer.core:3.9.0.B002]
    at java.base/java.lang.Thread.run(Thread.java:834)

已在POM中添加以下依赖,但仍无法解析software.amazon.awssdk.auth.credentials包:

<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>aws-sdk-java</artifactId>
    <version>2.20.2</version>
    <scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/software.amazon.awssdk/auth -->
<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>auth</artifactId>
    <version>2.20.2</version>
</dependency>

需要导入的类:

import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sns.SnsClient;
import software.amazon.awssdk.services.sns.model.CreateTopicRequest;
import software.amazon.awssdk.services.sns.model.CreateTopicResponse;
import software.amazon.awssdk.services.sns.model.SnsException;
解决方案

1. 替换聚合包依赖为SNS专用依赖

AWS SDK v2采用模块化设计,aws-sdk-java是聚合包,且provided作用域会让Maven认为该依赖由运行环境提供,但AEM容器并不包含AWS SDK的OSGI包,这是导致依赖无法解析的核心原因。

移除原有的aws-sdk-java依赖,添加SNS专用依赖(默认compile作用域即可):

<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>sns</artifactId>
    <version>2.20.2</version>
</dependency>

2. 显式补充必要的基础依赖

sns依赖会间接引入auth和regions,但如果仍出现缺失问题,可以显式添加这两个依赖确保覆盖:

<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>auth</artifactId>
    <version>2.20.2</version>
</dependency>
<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>regions</artifactId>
    <version>2.20.2</version>
</dependency>

3. 验证OSGI导入配置

确保Maven Bundle Plugin生成的Import-Package包含所需的AWS SDK包,若有自定义配置需手动补充:

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <extensions>true</extensions>
    <configuration>
        <instructions>
            <Import-Package>
                software.amazon.awssdk.auth.credentials,
                software.amazon.awssdk.regions,
                software.amazon.awssdk.services.sns.*,
                *
            </Import-Package>
        </instructions>
    </configuration>
</plugin>

4. 清理重构项目

执行以下命令清理缓存并重新构建,确保依赖被正确下载和打包:

mvn clean install -PautoInstallPackage

内容的提问来源于stack exchange,提问作者Mario R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 14:06:56