【问题标题】:Maven project "AmazonS3ClientBuilder() has private access in com.amazonaws.services.s3.AmazonS3ClientBuilder"Maven 项目“AmazonS3ClientBuilder() 在 com.amazonaws.services.s3.AmazonS3ClientBuilder 中具有私有访问权限”
【发布时间】:2020-02-06 20:24:22
【问题描述】:

我有一个文件,很早就得到了标题中提到的错误:

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();
}

我在调用 new AmazonS3ClientBuilder() 时收到标题中的错误。

我是 Maven 新手,我认为我的 pom 设置正确。这里是:

<?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>

我猜我的 pom 出了点问题,但我不知道是什么问题。当我从 AWS 开发工具包中包含 everything(而不是仅真正包含 S3 依赖项)时,我得到了同样的错误。

那么,任何人都可以找出问题所在吗?

【问题讨论】:

  • 构造函数是私有的。

标签: java amazon-web-services maven amazon-s3 pom.xml


【解决方案1】:

AmazonS3ClientBuilderdocumentation 声明此类不公开 public 无参数构造函数。这意味着你不能从你的类中调用new AmazonS3ClientBuilder()

好在这个类提供了两个static工厂方法;其中一个方法AmazonS3ClientBuilder#defaultClient 创建一个AmazonS3 实例(客户端),另一个方法AmazonS3ClientBuilder#standard 创建一个构建器实例。

知道了这一点,您可以将您的代码替换为以下 sn-ps 之一:

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

或者:

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

【讨论】:

  • 就是这样 - 非常感谢!我认为我的依赖项有问题只是简单的语法。再次感谢!
猜你喜欢
  • 2018-08-07
  • 1970-01-01
  • 2013-10-27
  • 2023-03-23
  • 2014-11-24
  • 1970-01-01
  • 2021-12-15
  • 2016-05-23
相关资源
最近更新 更多