/ / java.lang.NoClassDefFoundError no Java Lambda - java, amazon-s3, aws-lambda

java.lang.NoClassDefFoundError no Java Lambda - java, amazon-s3, aws-lambda

Eu estou tentando criar minha primeira função lambda em Java.

Eu quero começar com um pequeno exemplo, lendo um evento de entrada do S3.

É o meu código:

package com.amazonaws.lambda.alfreddo;

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

public class LambdaFunctionHandler implements RequestHandler<S3Event, String> {

@Override
public String handleRequest(S3Event input, Context context) {
context.getLogger().log("Input: " + input);

// TODO: implement your handler
return "Hello from Lambda!";
}

}

Mas quando eu tento executá-lo no AWS Console, recebo o próximo erro:

{
"errorMessage": "Error loading method handleRequest on class com.amazonaws.lambda.alfreddo.LambdaFunctionHandler",
"errorType": "java.lang.NoClassDefFoundError"
}

Error loading method handleRequest on class com.amazonaws.lambda.alfreddo.LambdaFunctionHandler: java.lang.NoClassDefFoundError
java.lang.NoClassDefFoundError: com/amazonaws/services/lambda/runtime/events/S3Event
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetPublicMethods(Class.java:2902)
at java.lang.Class.getMethods(Class.java:1615)
Caused by: java.lang.ClassNotFoundException: com.amazonaws.services.lambda.runtime.events.S3Event
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 4 more

Eu estou usando o AWS Toolkit for Eclipse.

qualquer ajuda?

Obrigado!

Respostas:

1 para resposta № 1

Este: com/amazonaws/services/lambda/runtime/events/S3Event Não está no seu ClassPath.

Se você está construindo um jar você tem que ter certeza de adicionar suas dependências, ou, se você está rodando a partir do CLI, certifique-se de adicionar explicitamente o local de dependência via -cp /dir/to/location