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

调用Quarkus AWS Lambda时出现QuarkusStreamHandler类找不到错误

解决Quarkus 2.16 AWS Lambda部署后ClassNotFoundException问题

问题根源

你遇到的ClassNotFoundException主要源于两个核心问题:

  1. Lambda Handler配置的类名错误(Quarkus 2.x版本中handler的包名已变更)
  2. 打包流程未正确生成包含所有依赖的可执行Jar

分步解决

1. 修正Lambda Handler类名

Quarkus 2.x版本中,QuarkusStreamHandler的完整类名是:

io.quarkus.amazon.lambda.runtime.QuarkusStreamHandler

你之前配置的o.quarkus.amazon.lambda.runtime.QuarkusStreamHandler缺少了前缀io,这是导致类找不到的直接原因。

操作:

  • 在AWS Lambda控制台的函数配置中,将「Handler」字段更新为上述完整类名
  • 如果使用AWS CLI部署,确保命令中指定正确的handler参数:
    aws lambda update-function-code --function-name YOUR_FUNCTION_NAME --zip-file fileb://target/your-project-name-1.0.0-SNAPSHOT-runner.jar --handler io.quarkus.amazon.lambda.runtime.QuarkusStreamHandler
    

2. 确保正确打包Uber-Jar

仅在application.properties设置quarkus.package.type=uber-jar还不够,需要通过Quarkus Maven插件执行专属打包命令:

mvn clean package -Dquarkus.package.type=uber-jar

该命令会生成一个后缀为*-runner.jar的文件,这个Jar包含了所有依赖和Quarkus运行时,是Lambda所需的可执行包。

3. 检查Pom.xml插件配置

确保你的pom.xml包含Quarkus Maven插件(如果缺失,添加以下配置到<build><plugins>节点):

<plugin>
  <groupId>io.quarkus</groupId>
  <artifactId>quarkus-maven-plugin</artifactId>
  <version>${quarkus.platform.version}</version>
  <executions>
    <execution>
      <goals>
        <goal>build</goal>
        <goal>generate-code</goal>
        <goal>generate-code-tests</goal>
      </goals>
    </execution>
  </executions>
</plugin>

注意:${quarkus.platform.version}需要与你使用的Quarkus 2.16.x版本保持一致。

4. 验证Jar内容

打包完成后,可通过以下命令检查Jar中是否包含目标类:

jar tf target/your-project-name-1.0.0-SNAPSHOT-runner.jar | grep QuarkusStreamHandler

若输出包含io/quarkus/amazon/lambda/runtime/QuarkusStreamHandler.class,说明Jar包生成正确。

重新部署验证

完成上述步骤后,重新打包并部署Lambda函数,再次调用即可解决类找不到的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 16:58:34