Проект Maven "AmazonS3ClientBuilder () имеет частный доступ в com.amazon aws .services.s3.AmazonS3ClientBuilder" - PullRequest
1 голос
/ 06 февраля 2020

Я получил файл и получил ошибку, упомянутую в заголовке, очень рано:

import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.Bucket;
import com.amazonaws.services.s3.model.ObjectMetadata;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.amazonaws.services.s3.model.PutObjectResult;
import java.io.File;

public static void main(String[] args) throws Exception {
    createAndPopulateSimpleBucket();
}

public static void createAndPopulateSimpleBucket() throws Exception {
    AmazonS3 s3client = new AmazonS3ClientBuilder().standard().build();
}

Я получаю ошибку в заголовке, когда я вызываю новый AmazonS3ClientBuilder ().

Я новичок в Maven, и я думаю У меня правильно настроен пом. Вот оно:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>groupId</groupId>
    <artifactId>AWSJavaHelloWorld</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.amazonaws</groupId>
                <artifactId>aws-java-sdk-bom</artifactId>
                <version>1.11.715</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>

        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-s3</artifactId>
        </dependency>

    </dependencies>
</project>

Полагаю, что-то не так с моим пом, но я не могу понять, что. Я также получаю ту же ошибку, когда я включаю все из AWS SDK (вместо того, чтобы действительно включать зависимость S3).

Итак, любой может определить что не так?

1 Ответ

1 голос
/ 06 февраля 2020

Документация из AmazonS3ClientBuilder гласит, что этот класс не предоставляет конструктор public без аргументов. Это означает, что вы не можете вызвать new AmazonS3ClientBuilder() из вашего класса.

К счастью, этот класс предоставляет два static фабричных метода; один из этих методов, AmazonS3ClientBuilder#defaultClient, создает экземпляр AmazonS3 (клиент), а другой метод, AmazonS3ClientBuilder#standard, создает экземпляр компоновщика.

Зная это, вы можете заменить свой код одним из следующих фрагментов:

public static void createAndPopulateSimpleBucket() throws Exception {
    AmazonS3 s3client = AmazonS3ClientBuilder.defaultClient();
}

Или:

public static void createAndPopulateSimpleBucket() throws Exception {
    AmazonS3 s3client = AmazonS3ClientBuilder.standard().build();
}
...