2017-06-02 111 views
0

我正在使用AWS开发工具包for Java在AWS计量服务中使用。当我试图用AWSMarketplaceMeteringClientBuilder创建AWSMarketplaceMeteringClient,我发现,如果我用withRegion(Region region)方法,我得到以下编译时错误:AWSMarketplaceMeteringClientBuilder.withRegion()不可见

The method withRegion(Region) from the type AwsClientBuilder<AWSMarketplaceMeteringClientBuilder,AWSMarketplaceMetering> is not visible 

如下图所示的客户端代码:

AWSMarketplaceMeteringClient metClient = (AWSMarketplaceMeteringClient) AWSMarketplaceMeteringClientBuilder 
     .standard() 
     .withRegion(Regions.getCurrentRegion()) 
     .withCredentials(InstanceProfileCredentialsProvider.getInstance()) 
     .build(); 

而且当我尝试使用AWSMarketplaceMeteringClient直接setRegion(Region region)方法,我得到以下运行时错误:

Exception in thread "main" java.lang.UnsupportedOperationException: Client is immutable when created with the builder. 
    at com.amazonaws.AmazonWebServiceClient.checkMutability(AmazonWebServiceClient.java:854) 
    at com.amazonaws.AmazonWebServiceClient.setRegion(AmazonWebServiceClient.java:349) 

那么应该如何使用withRegion(Region region)方法?

回答

0

如果我们仔细观察,AwsClientBuilder类有以下方法:

public final Subclass withRegion(Regions region) { } 
public final Subclass withRegion(String region) { } 
private Subclass withRegion(Region region) { } 

我尝试使用方法withRegion(区区域),这是在这个基类私有。所以我们应该使用withRegion(Regions region)方法[注意:参数是Regions而不是Region]。使用这种方法解决了我的问题。