我遇到异常并且无法弄清楚到底出了什么问题?
START RequestId: 6e561b8c-2fd0-11e8-8bd0-edfc4c9a75aa Version: $LATEST
com/amazonaws/services/dynamodbv2/AmazonDynamoDBClientBuilder: **java.lang.NoClassDefFoundError
java.lang.NoClassDefFoundError: com/amazonaws/services/dynamodbv2/AmazonDynamoDBClientBuilder**
at com.tarkshala.dynamodb.StudentDAOImpl.create(StudentDAOImpl.java:12)
at com.tarkshala.lambda.StudentController.handleRequest(StudentController.java:16)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
Caused by: java.lang.ClassNotFoundException: com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 6 more
我的pom.xml如下所示:
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.301</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-core</artifactId>
<version>1.2.0</version>
</dependency>
即使我的IDE正在解决类定义,那么为什么它会在运行时产生问题?
答案 0 :(得分:1)
从错误消息中看起来您正在尝试从Java实现的Lambda函数中查询DynamoDb。
使用基于Java的AWS Lambda函数时,您的函数代码必须包含所有依赖项。您不能依赖Lambda来解决pom.xml中的依赖关系,就像使用Maven的本地系统一样。
最常见的方法是生成一个JAR(通常称为“胖JAR”),其中包含代码和代码所需的所有依赖项(通常是类路径中执行代码所需的所有内容)。
将代码中的依赖项与代码一起部署到Lambda后,事情应该按照您的预期开始工作。
的详细信息