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

通过AWS S3部署AWS Lambda时出现ClassNotFound异常求助

问题原因

你遇到的类找不到问题,核心是S3上的zip包结构不符合Lambda Java运行时的要求。

当你用--zip-file直接上传Jar时,Lambda会自动识别这个Jar为部署包,将Jar内的类加入classpath;但如果你把Jar压缩成zip上传,Lambda解压后只会把Jar文件放在/var/task目录下,不会自动将这个Jar加入classpath,自然找不到里面的com.demo.lambda.handlers.DemoHandler类。

解决方案

方案1:直接上传Jar到S3(推荐)

不要把Jar压缩成zip,直接将maven-shade生成的Jar上传到S3,然后执行以下命令部署:

aws lambda update-function-code --function-name demo-test --s3-bucket build-owanbe-api-lambdas --s3-key demo-lambda-1.0-SNAPSHOT.jar

方案2:调整zip包结构(如果必须用zip)

如果一定要用zip包部署,需要修改压缩方式:

  • 解压maven-shade生成的demo-lambda-1.0-SNAPSHOT.jar文件
  • 将解压后的所有文件(包括com目录、依赖类文件等)直接压缩成zip(不要把Jar本身放进zip)
  • 把这个新zip上传到S3,再执行原来的部署命令

额外检查项

  • 确认S3上的文件没有损坏:下载S3上的zip/Jar,和本地文件对比大小、校验哈希值
  • 确认Lambda函数的handler配置依然是com.demo.lambda.handlers.DemoHandler(本地部署正常的话这个应该没问题)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 07:37:17