You need to enable JavaScript to run this app. AWS SQS发消息报错NoSuchFieldError: CLIENT_ENDPOINT求助
优惠活动
大模型
产品
解决方案
定价
更多

AWS SQS发消息报错NoSuchFieldError: CLIENT_ENDPOINT求助

问题原因

这个java.lang.NoSuchFieldError: CLIENT_ENDPOINT错误本质是AWS Java SDK各模块版本不一致导致的类加载冲突:CLIENT_ENDPOINT常量是较高版本AWS SDK的AmazonSQSClient类才引入的字段,当项目类路径中同时存在多个版本的AWS SDK核心包和SQS包时,低版本的核心类被优先加载,调用高版本SQS类的逻辑就会找不到对应字段抛出异常。

你当前项目的版本冲突来源于以下几个问题:

  • Spring Cloud AWS 2.2.4.RELEASE默认管理的AWS SDK版本为1.11.837,但你在ext中自定义的AWS_SDK版本为1.11.611,二者存在版本差
  • 多处注释了手动指定版本的aws-java-sdk-sqs依赖,存在多版本依赖残留风险
  • amazon-sqs-java-messaging-lib未指定版本,会传递引入不匹配的AWS SDK版本
  • 自定义jar打包逻辑可能残留旧版本依赖的类文件
解决方案
  • 第一步:统一AWS SDK版本
    首先将ext块中的AWS_SDK修改为和Spring Cloud AWS 2.2.4.RELEASE兼容的版本:
    AWS_SDK = "1.11.837"
    
    然后在dependencyManagement的dependencies块中引入AWS SDK的bom,强制所有AWS模块版本统一:
    dependencyManagement {
        dependencies {
            // 新增这一行
            dependency "com.amazonaws:aws-java-sdk-bom:${AWS_SDK}"
            // 原有其他依赖保持不变
        }
    }
    
  • 第二步:规范SQS相关依赖声明
    取消aws-java-sdk-sqs的注释,不需要手动指定版本,由bom统一管理:
    implementation 'com.amazonaws:aws-java-sdk-sqs'
    
    同时amazon-sqs-java-messaging-lib无需手动指定版本,直接由bom统一管理即可。
  • 第三步:清理依赖缓存与旧构建产物
    运行以下命令清理旧的构建文件和依赖缓存:
    gradle clean
    
  • 第四步:验证依赖版本一致性
    运行以下命令检查所有AWS SDK相关依赖的版本是否统一:
    gradle dependencies | grep "com.amazonaws"
    
    确认所有aws-java-sdk-*开头的依赖版本均为1.11.837,没有混杂其他版本。
  • 第五步:重新构建打包
    运行构建命令重新生成部署包:
    gradle build
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 11:15:08