【问题标题】:java.lang.ClassNotFoundException while referencing Lambda code in AWS CDK code在 AWS CDK 代码中引用 Lambda 代码时出现 java.lang.ClassNotFoundException
【发布时间】:2020-06-09 08:06:10
【问题描述】:

我是 AWS CDK 的新手。

问题:我正在尝试将我的 lambda 代码引用到 CDK 代码中,但是 当我尝试在 AWS Lambda 控制台上对其进行测试时,它会抛出 java.lang.ClassNotFoundException

我添加了一些代码供参考。这些类存在于同一个包中。

LambdaFunctionHandler 类:

Lambda 代码:

package com.myorg;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;

public class LambdaFunctionHandler implements RequestHandler<String, String> {

    public String handleRequest(String event, Context context) {
        context.getLogger().log("Received event: " + event);
        return "Hello from lambda "+event;

    }

}

CDK 代码:

package com.myorg;

import software.amazon.awscdk.core.Construct;
import software.amazon.awscdk.core.Stack;
import software.amazon.awscdk.core.StackProps;
import software.amazon.awscdk.services.lambda.Code;
import software.amazon.awscdk.services.lambda.Function;
import software.amazon.awscdk.services.lambda.Runtime;

public class CdkProjectStack extends Stack {
    public CdkProjectStack(final Construct scope, final String id) {
        this(scope, id, null);
    }

    public CdkProjectStack(final Construct scope, final String id, final StackProps props) {
        super(scope, id, props);

        // The code that defines your stack goes here
        final Function hello = Function.Builder.create(this, "HelloHandler")
                .runtime(Runtime.JAVA_8)   
                .code(Code.fromAsset("src/main/java/com/myorg"))  
                .handler("com.myorg.LambdaFunctionHandler::handleRequest")        
                .build();
    }
}

错误日志:

START RequestId: 0fdf618c-1bfb-4905-9283-f6b4e34a6585 Version: $LATEST
Class not found: com.myorg.LambdaFunctionHandler: java.lang.ClassNotFoundException
java.lang.ClassNotFoundException: com.myorg.LambdaFunctionHandler
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)

【问题讨论】:

  • 请添加错误日志。
  • @AnishB。请立即检查。
  • 请添加示例项目进行测试。
  • 您的处理程序看起来正确。您是否创建了部署包?请按照docs.aws.amazon.com/lambda/latest/dg/java-package.html 的指南了解更多信息
  • “没有创建部署包”是什么意思?无论您使用控制台还是 CLI,您都需要 Lambda 打包部署。

标签: java amazon-web-services aws-lambda aws-cdk


【解决方案1】:

创建部署包后它工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 2021-08-19
    • 2018-06-02
    相关资源
    最近更新 更多