在AWS CDK代码中引用Lambda代码时发生java.lang.ClassNotFoundException
我是AWS CDK的新手 问题:我试图将我的lambda代码引用到CDK代码中,但是 当我尝试在AWS Lambda控制台上测试它时,它抛出在AWS CDK代码中引用Lambda代码时发生java.lang.ClassNotFoundException,java,amazon-web-services,aws-lambda,aws-cdk,Java,Amazon Web Services,Aws Lambda,Aws Cdk,我是AWS CDK的新手 问题:我试图将我的lambda代码引用到CDK代码中,但是 当我尝试在AWS Lambda控制台上测试它时,它抛出java.lang.ClassNotFoundException 我添加了一些代码供参考。这些类存在于同一个包中 lambdFunctionHandler类: Lambda代码: package com.myorg; import com.amazonaws.services.lambda.runtime.Context; import com.amazo
java.lang.ClassNotFoundException
我添加了一些代码供参考。这些类存在于同一个包中
lambdFunctionHandler
类:
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;
}
}
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)
错误日志:
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;
}
}
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。请立即检查。请添加要测试的示例项目。处理程序看起来正确。您是否创建了部署包?有关更多信息,请遵循指南“未创建部署包”是什么意思?无论是使用控制台还是CLI,您都需要Lambda打包部署。