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

AWS CDK部署Java Lambda报Class not found: lambda.PocLambdaHandler如何解决

问题根本原因

  • Node.js是解释型语言,Lambda可以直接执行.js源码文件,所以你配置Nodejs运行时的测试逻辑可以正常运行。但Java是编译型语言,无法直接识别.java源文件,你当前通过Code.fromAsset("lambda")上传的只有未编译的Java源码,没有经过编译打包,Lambda运行时自然找不到对应的类。

解决步骤

1. 调整项目结构并配置Lambda打包规则

推荐给Lambda代码单独配置打包逻辑,调整后的项目结构参考:

main-project
├── lambda
│   ├── src
│   │   └── main
│   │       └── java
│   │           └── lambda // 对应类的包名
│   │               └── PocLambdaHandler.java
│   └── pom.xml // Lambda子模块的maven配置文件
├── src
│   └── main
│       └── java
│           └── com
│               └── myorg
│                   ├── JavaPocApp.java
│                   └── JavaPocStack.java
└── pom.xml // 父项目maven配置

2. 配置Lambda子模块的打包插件

在lambda/pom.xml中添加maven-shade-plugin,将Lambda代码和依赖一起打包为可执行jar:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.2.4</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <createDependencyReducedPom>false</createDependencyReducedPom>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

3. 修改CDK中Lambda的代码路径

将Code.fromAsset的路径指向Lambda打包后生成的jar文件:

final Function FunctionPOC = Function.Builder.create(this, "POCHandlerStack")
        .runtime(Runtime.JAVA_8) 
        // 路径中的jar名和版本号与你lambda子模块pom中配置的保持一致
        .code(Code.fromAsset("lambda/target/lambda-1.0-SNAPSHOT.jar"))
        .handler("lambda.PocLambdaHandler")
        .build();

4. 重新执行部署流程

  • 先进入lambda目录执行mvn clean package生成带依赖的jar包
  • 回到项目根目录执行cdk deploy完成部署

额外检查项

  • 确认PocLambdaHandler是public修饰的普通类,实现了com.amazonaws.services.lambda.runtime.RequestHandler接口
  • 打包完成后可以解压jar包,确认lambda/PocLambdaHandler.class文件存在且目录结构和包名一致

内容的提问来源于stack exchange,提问作者TJ-AWS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:24:08