Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AWS Lambda Java到S3-com.amazonaws.services.S3.AmazonS3ClientBuilder上的Java.lang.ClassNotFoundException_Java_Amazon Web Services_Amazon S3_Aws Lambda_Aws Sdk - Fatal编程技术网

AWS Lambda Java到S3-com.amazonaws.services.S3.AmazonS3ClientBuilder上的Java.lang.ClassNotFoundException

AWS Lambda Java到S3-com.amazonaws.services.S3.AmazonS3ClientBuilder上的Java.lang.ClassNotFoundException,java,amazon-web-services,amazon-s3,aws-lambda,aws-sdk,Java,Amazon Web Services,Amazon S3,Aws Lambda,Aws Sdk,我尝试在本地运行下面的代码(作为IntelliJ中的maven项目),它运行正常。当我尝试将其作为Lambda函数运行时,总是会得到一个java.lang.NoClassDefFoundError。不知何故,lambda使得在我包含下面的AmazonS3行时找不到该类 包示例; 导入com.amazonaws.services.lambda.runtime.Context; 导入com.amazonaws.services.lambda.runtime.RequestHandler; 导入com

我尝试在本地运行下面的代码(作为IntelliJ中的maven项目),它运行正常。当我尝试将其作为Lambda函数运行时,总是会得到一个
java.lang.NoClassDefFoundError
。不知何故,lambda使得在我包含下面的AmazonS3行时找不到该类

包示例;
导入com.amazonaws.services.lambda.runtime.Context;
导入com.amazonaws.services.lambda.runtime.RequestHandler;
导入com.amazonaws.services.s3.AmazonS3;
导入com.amazonaws.services.s3.AmazonS3ClientBuilder;
公共类ParserLambda实现RequestHandler{
@凌驾
公共对象handleRequest(对象输入、上下文){
字符串retval=“”;
试一试{
AmazonS3 s3Client=AmazonS3ClientBuilder.standard().build();
}捕获(例外情况除外){
返回“{'status':'error','retval':'”+ex.getMessage()+“}”;
}
返回“{'status':'done','retval':'“+retval+”}”;
}
}
如果我把下面这行注释掉

//AmazonS3 s3Client=AmazonS3ClientBuilder.standard().build();
它给出:
“{'status':'done','retval':'''}”
。这是一个有效的结果

未注释时

AmazonS3 s3Client=AmazonS3ClientBuilder.standard().build();
我得到:

{
  "errorMessage": "com/amazonaws/services/s3/AmazonS3ClientBuilder",
  "errorType": "java.lang.NoClassDefFoundError",
  "stackTrace": [
    "example.ParserLambda.handleRequest(ParserLambda.java:11)",
    "sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)",
    "sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)",
    "sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)",
    "java.lang.reflect.Method.invoke(Method.java:498)"
  ],
  "cause": {
    "errorMessage": "com.amazonaws.services.s3.AmazonS3ClientBuilder",
    "errorType": "java.lang.ClassNotFoundException",
    "stackTrace": [
      "java.net.URLClassLoader.findClass(URLClassLoader.java:381)",
      "java.lang.ClassLoader.loadClass(ClassLoader.java:424)",
      "java.lang.ClassLoader.loadClass(ClassLoader.java:357)",
      "example.ParserLambda.handleRequest(ParserLambda.java:11)",
      "sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)",
      "sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)",
      "sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)",
      "java.lang.reflect.Method.invoke(Method.java:498)"
    ]
  }
}
我的pom文件包括:


亚马逊网站
aws java sdk
1.11.286
我也尝试过:

amazons3s3client=AmazonS3ClientBuilder.defaultClient();
AmazonS3 s3Client=AmazonS3ClientBuilder.standard()。带区域(Regions.US_EAST_1)。带ForceGlobalBucketAccessEnabled(true).build();

但是没有成功。

我认为问题在于aws-java-sdk-s3没有作为aws java sdk的一部分提供给lambda函数,因此您必须将其显式地包含在.jar中

我的pom如下所示以清除错误:

        <dependencies>
            <dependency>
                <groupId>com.amazonaws</groupId>
                <artifactId>aws-java-sdk</artifactId>
                <version>1.11.297</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>com.amazonaws</groupId>
                <artifactId>aws-java-sdk-s3</artifactId>
                <version>1.11.297</version>
            </dependency>

亚马逊网站
aws java sdk
1.11.297
假如
亚马逊网站
aws-java-sdk-s3
1.11.297

我遇到了同样的问题,并在几次不同的尝试后解决了它

在my
pom.xml
中调整以下依赖项是不够的(请注意
aws java sdk
依赖项提供的
):


亚马逊网站

感谢您指出最后一步!知道Intellij idea为什么不能正确构建包吗?
mvn package