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

Spring Boot集成AWS S3与SNS遇Unmarshaller错误的解决方法

解决Spring Boot同时集成AWS S3与SNS的版本冲突问题

你的问题核心是AWS SDK各服务版本不统一导致的依赖冲突:S3使用1.12.141版本,SNS使用1.12.319版本,两者版本差距过大,底层核心库(如aws-java-sdk-core)的类方法签名不一致,最终抛出NoSuchMethodError。

以下是直接可行的解决方案:

方案1:用AWS SDK BOM统一管理版本(推荐)

Maven的BOM(物料清单)可以强制所有AWS SDK服务模块使用同一版本,彻底避免版本冲突。在pom.xml中先导入BOM,再添加S3和SNS依赖时无需指定版本:

<dependencyManagement>
    <dependencies>
        <!-- AWS SDK BOM,统一所有服务版本 -->
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-bom</artifactId>
            <version>1.12.319</version> <!-- 选择统一版本,这里沿用SNS的新版本 -->
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<!-- 后续添加S3、SNS依赖,无需写version -->
<dependencies>
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-s3</artifactId>
    </dependency>
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-sns</artifactId>
    </dependency>
</dependencies>

方案2:手动统一两个服务的版本

如果不想使用BOM,直接将S3的版本修改为与SNS一致(反之亦可,选择一个稳定版本即可):

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-s3</artifactId>
    <version>1.12.319</version> <!-- 和SNS版本保持统一 -->
</dependency>
<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-sns</artifactId>
    <version>1.12.319</version>
</dependency>

验证步骤

  1. 执行mvn clean install清理并重新构建项目
  2. 用mvn dependency:tree命令检查依赖树,确认aws-java-sdk-core仅存在一个版本,无冲突
  3. 重启Spring Boot应用,重新调用SNS订阅接口测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:50:25