Java AWS Lambda报ClassNotFoundException:找不到org.example.HelloWorld.handler
错误原因及解决方法
核心原因1:Handler配置格式错误
Lambda的Java Handler配置要求格式为**全限定类名::方法名**,如果你在配置时写成了org.example.HelloWorld.handler(用点号连接类与方法),Lambda会把整个字符串当作类名去查找,自然找不到对应的类。
核心原因2:Jar包未正确包含编译后的类文件
若Maven打包过程中,没有把org/example/HelloWorld.class放到Jar包的根目录下(比如类文件被嵌套在子目录、打包了源码而非字节码),Lambda也无法定位到目标类。
解决方法
1. 修正Handler配置
在AWS Lambda控制台的函数配置页面,将Handler字段修改为:
org.example.HelloWorld::handler
注意使用双冒号连接类名与方法名,而非点号。
2. 检查并修正Maven打包配置
确保pom.xml包含正确的打包插件,保证编译后的类被正确打包到Jar根目录。标准配置示例如下:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>11</source> <!-- 对应Lambda支持的Java版本,如8/11/17 --> <target>11</target> </configuration> </plugin> <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>
执行mvn clean package后,打开生成的Jar包,确认org/example/HelloWorld.class存在于Jar根目录下。
3. 验证Jar包内容
用以下命令查看Jar包内部结构:
jar tf hello-lambda.jar
输出中必须包含org/example/HelloWorld.class这一行,否则说明打包过程存在问题,需检查Maven编译、打包步骤是否正常执行。
内容的提问来源于stack exchange,提问作者dredbound
相关产品推荐
相关产品推荐

