使用适用于 Java 的 AWS 开发工具包 v2 创建 Amazon S3 存储桶:线程“main”中出现异常 java.lang.NoClassDefFoundError

问题描述 投票:0回答:1

尝试使用 java api 创建 aws 的 s3 存储桶时出现以下错误:

错误:

            Exception in thread "main" java.lang.NoClassDefFoundError: software/amazon/awssdk/protocols/query/internal/unmarshall/AwsXmlErrorUnmarshaller
                at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlErrorTransformer.<init>(AwsXmlErrorTransformer.java:40)
                at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlErrorTransformer.<init>(AwsXmlErrorTransformer.java:34)
                at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlErrorTransformer$Builder.build(AwsXmlErrorTransformer.java:113)
                at software.amazon.awssdk.protocols.xml.AwsXmlProtocolFactory.createErrorTransformer(AwsXmlProtocolFactory.java:135)
                at software.amazon.awssdk.protocols.xml.AwsS3ProtocolFactory.createErrorCouldBeInBodyResponseHandler(AwsS3ProtocolFactory.java:80)
                at software.amazon.awssdk.services.s3.DefaultS3Client.createBucket(DefaultS3Client.java:1144)
                at com.act.niti.main(niti.java:33)
            Caused by: java.lang.ClassNotFoundException: software.amazon.awssdk.protocols.query.internal.unmarshall.AwsXmlErrorUnmarshaller
                at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
                at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
                at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
                at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
                ... 8 more

代码:

        try {
         Region region = Region.US_EAST_2; 
         S3Client s3 = S3Client.builder()
            .region(region)
            .build();
             S3Waiter s3Waiter = s3.waiter();
             CreateBucketRequest bucketRequest = CreateBucketRequest.builder()
                    .bucket("abc")
                    .build();
             
            
             s3.createBucket(bucketRequest); //creating s3 bucket
              System.out.println("bucket........abc");
              HeadBucketRequest bucketRequestWait = HeadBucketRequest.builder()
              .bucket("abc")
              .build();
              
              // Wait until the bucket is created and print out the response
              WaiterResponse<HeadBucketResponse> waiterResponse =
              s3Waiter.waitUntilBucketExists(bucketRequestWait);
              waiterResponse.matched().response().ifPresent(System.out::println);
              System.out.println("abc" +" is ready");
             

        } catch (S3Exception e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }

注意:使用java 8

java amazon-web-services amazon-s3
1个回答
0
投票

刚刚测试了此适用于 Java V2 的 AWS 开发工具包示例,它运行良好 - 如该逐行显示调试的屏幕截图所示。

![enter image description here

您的错误看起来像是缺少课程。您是否使用了此处 POM 文件中显示的 POM 依赖项?

https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/s3

© www.soinside.com 2019 - 2024. All rights reserved.