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

排查Java中AmazonEC2ClientBuilder类未找到(NoClassDefFoundError)错误

解决Java Lambda中的NoClassDefFoundError: com.amazonaws.services.ec2.AmazonEC2ClientBuilder错误

错误详情

java.lang.NoClassDefFoundError: com.amazonaws.services.ec2.AmazonEC2ClientBuilder
at com.stopinstance.InstanceControlLambda.(InstanceControlLambda.java:14)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.amazonaws.services.ec2.AmazonEC2ClientBuilder. Current classpath: file:/var/task/

排查与解决步骤

  • 检查依赖范围与版本
    确保pom.xml中aws-java-sdk-ec2依赖的范围为compile(不要设置为provided,Lambda默认运行时携带的AWS SDK版本通常较旧,不包含AmazonEC2ClientBuilder)。同时确认没有多版本AWS SDK依赖冲突,避免打包时该类被排除。

  • 验证打包完整性
    使用Maven的maven-shade-plugin或maven-assembly-plugin构建fat jar,确保所有依赖类被打包进去。解压生成的jar文件,检查是否存在com/amazonaws/services/ec2/AmazonEC2ClientBuilder.class,若缺失则调整打包配置。

  • 检查SAM模板配置
    确认template.yaml中Lambda的CodeUri指向正确的打包产物路径(如target/your-project.jar)。如果使用Layer管理依赖,需确保Layer包含EC2 SDK类,且Lambda已正确关联该Layer。

  • 匹配运行时与SDK版本
    若使用Java 11+,确认AWS SDK v1版本与Java版本兼容(AmazonEC2ClientBuilder属于AWS SDK v1,若误引入v2依赖会导致类找不到)。同时检查Lambda控制台上传的包与本地打包文件一致,无上传损坏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 10:42:44