如何在Eclipse中生成可上传至AWS Lambda的Java项目zip部署包
报错原因
你遇到的java.lang.NoClassDefFoundError是因为直接用Eclipse自带的导出zip功能生成的包仅包含项目源码和工程配置,没有把项目依赖的AWS SDK、Lambda运行库等第三方类打进去,Lambda运行环境找不到对应类就会抛出该错误。AWS Toolkit上传时会自动帮你完成依赖合并的步骤,所以可以正常运行。
正确打包操作步骤
你的项目已经是Maven项目,且pom.xml中已经配置了专门用来合并所有依赖的maven-shade-plugin,直接通过Maven打包即可:
- 在Eclipse左侧项目列表中右键点击你的项目,选择「Run As」→「Maven build...」
- 在弹出的配置窗口的「Goals」输入栏填入
package,点击「Run」执行打包 - 打包完成后,打开项目根目录下的
target文件夹,找到名称为demo-1.0.0-shaded.jar的文件(如果没有带shaded后缀的文件,直接用demo-1.0.0.jar即可) - 直接在AWS Lambda控制台上传这个jar包即可,Lambda支持直接上传jar格式的部署包,不需要额外打包成zip。如果一定要用zip格式,把这个jar文件单独放在zip根目录上传即可。
额外注意事项
你当前的pom.xml还缺少S3服务的SDK依赖,你代码中用到了AmazonS3客户端,但仅引入了aws-java-sdk-bom(仅用来统一管理SDK版本,不会自动引入具体服务的SDK),需要在pom.xml的dependencies节点下新增以下配置,再重新打包:
<dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-s3</artifactId> </dependency>
内容的提问来源于stack exchange,提问作者mastercooler6
相关产品推荐
相关产品推荐

