0

我正在尝试将动态对象上传到我的 Web 应用程序的 s3 存储桶中。但是在初始化 AWS3Client 期间没有遇到此类方法错误。最初,输入是一个多部分图像,将其保存到本地机器中,然后将其用于将其上传到 s3 存储桶中。如第一张图所示,在上传过程中出现 No such method 异常。 客户端初始化期间的异常快照

此外,在第二张图片中指定了用于 pom 的亚马逊依赖项。 pom-Amazon_dependency

以下是用于在应用程序中启动 s3client 的代码。

Map<String, String> s3Credentials = ((FSRepositoryServiceImpl) fsRepositoryService).getS3Credentials();
AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.AP_SOUTH_1).withCredentials(
                new AWSStaticCredentialsProvider(new BasicAWSCredentials(s3Credentials.get("accessKeyId"),
                        s3Credentials.get("secretAccessKey"))))
                .build();

以下是有关问题 Pom 依赖项的更多详细信息

<dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.4.3</version>
    </dependency>

    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-core-asl</artifactId>
        <version>1.9.13</version>
    </dependency>

    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.9.13</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.13.1</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-s3 -->
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-s3</artifactId>
        <version>1.12.150</version>
    </dependency>

将对象上传到 s3 存储桶的代码:

            //Save temporary document in file format for uploading to s3
        Map<String, String> s3ObjectDetails = fsRepositoryService.saveTempDocumentforS3Reference(
                basePatientDocumentsRepoPath, docContents, ext, originalImgFileName);

        //Credentials for aws account
        Map<String, String> s3Credentials = ((FSRepositoryServiceImpl) fsRepositoryService).getS3Credentials();

        AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.AP_SOUTH_1).withCredentials(
                new AWSStaticCredentialsProvider(new BasicAWSCredentials(s3Credentials.get(<accessKeyId>),
                        s3Credentials.get(<secretAccessKey>))))
                .build();

        //bucket details on the aws cloud
        Map<String, String> bucketDetails = ((FSRepositoryServiceImpl) fsRepositoryService).getBucketDetails(
                /* used this for dynamic key name for bucket */s3ObjectDetails.get(<document Name>));

        String uploadingPath = bucketDetails.get(<filePath>) + "/" + patientId + "/";
        uploadingPath = uploadingPath.replace("//", "/");

        String fileToUpload = s3ObjectDetails.get(<Pathofthedocument>);
        PutObjectRequest objectRequest = new PutObjectRequest(bucketDetails.get(bucket),
                uploadingPath + bucketDetails.get(<key>), <fileToUpload>);

        ObjectMetadata metadata = new ObjectMetadata();
        metadata.setContentType("plain/text");
        metadata.addUserMetadata(<key Name>, bucketDetails.get(key));
        objectRequest.setMetadata(metadata);
        PutObjectResult uploadImagetoS3 = s3.putObject(objectRequest);

错误说明:

02:54,190 信息:保存文档 5f5ab725-0403-4554-b62c-674130c9a8f2-1643628704942 下:/data/ihealwell/patients/ImagePrescription/20808/ 2022 年 1 月 31 日 5:07:27 PM org.apache.catalina.core.StandardWrapper在路径 [/IHW] 的上下文中为 servlet [api-dispatcher] 调用严重的 Servlet.service() 引发异常 [处理程序处理失败;嵌套异常是 java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.ObjectMapper.enable([Lcom/fasterxml/jackson/core/JsonParser$Feature;)Lcom/fasterxml/jackson/databind/ObjectMapper;] 根本原因是 java .lang.NoSuchMethodError: com.fasterxml.jackson.databind.ObjectMapper.enable([Lcom/fasterxml/jackson/core/JsonParser$Feature;)Lcom/fasterxml/jackson/databind/ObjectMapper; 在 com.amazonaws.regions.RegionMetadataFactory 的 com.amazonaws.partitions.PartitionsLoader.(PartitionsLoader.java:54)。

4

0 回答 0