2017-12-12 33 views
1

こんにちはIBM Cloud Object Storageの皆さん、これは私の顧客からの質問です。IBM Cloud Object Storage Java SDKでオブジェクト・ストレージに接続する際のエラー

お客様は、次のURLのサンプルコードを参照しています。 https://console.bluemix.net/docs/services/cloud-object-storage/libraries/java.html#getting-the-sdk

以下は、お客様が実行するコードです。顧客が実行を成功していないが

/* 
 
* To change this license header, choose License Headers in Project Properties. 
 
* To change this template file, choose Tools | Templates 
 
* and open the template in the editor. 
 
*/ 
 
package bluemixtest; 
 

 
import com.amazonaws.ClientConfiguration; 
 
import com.amazonaws.SDKGlobalConfiguration; 
 
import com.amazonaws.auth.AWSCredentials; 
 
import com.amazonaws.auth.AWSStaticCredentialsProvider; 
 
import com.amazonaws.auth.BasicAWSCredentials; 
 
import com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration; 
 
import com.amazonaws.services.s3.AmazonS3; 
 
import com.amazonaws.services.s3.AmazonS3ClientBuilder; 
 
import com.amazonaws.services.s3.model.Bucket; 
 
import com.amazonaws.services.s3.model.ListObjectsRequest; 
 
import com.amazonaws.services.s3.model.ObjectListing; 
 
import com.amazonaws.services.s3.model.S3ObjectSummary; 
 
import com.ibm.oauth.BasicIBMOAuthCredentials; 
 
import java.util.List; 
 

 
/** 
 
* 
 
* @author m_ishikawa 
 
*/ 
 
public class BlueMixTest { 
 

 
    private static AmazonS3 _s3Client; 
 

 
    /** 
 
    * @param args the command line arguments 
 
    */ 
 
    public static void main(String[] args) { 
 
     SDKGlobalConfiguration.IAM_ENDPOINT = "https://iam.bluemix.net/oidc/token"; 
 

 
     String bucketName = "xxxxx"; 
 
     String api_key = "xxxxx"; 
 
     String service_instance_id = "xxxxx"; 
 
     String endpoint_url = "https://s3-api.us-geo.objectstorage.softlayer.net"; 
 
//  String endpoint_url = "https://cos-service.bluemix.net/endpoints"; 
 
     String location = "us"; 
 

 
     _s3Client = createClient(api_key, service_instance_id, endpoint_url, location); 
 
     listObjects(bucketName, _s3Client); 
 
     listBuckets(_s3Client); 
 
    } 
 

 
    public static AmazonS3 createClient(String api_key, String service_instance_id, String endpoint_url, String location) { 
 
     AWSCredentials credentials; 
 
     if (endpoint_url.contains("objectstorage.softlayer.net")) { 
 
      credentials = new BasicIBMOAuthCredentials(api_key, service_instance_id); 
 
     } else { 
 
      String access_key = api_key; 
 
      String secret_key = service_instance_id; 
 
      credentials = new BasicAWSCredentials(access_key, secret_key); 
 
     } 
 
     ClientConfiguration clientConfig = new ClientConfiguration().withRequestTimeout(5000); 
 
     clientConfig.setUseTcpKeepAlive(true); 
 

 
     AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(credentials)) 
 
       .withEndpointConfiguration(new EndpointConfiguration(endpoint_url, location)).withPathStyleAccessEnabled(true) 
 
       .withClientConfiguration(clientConfig).build(); 
 
//    .build(); 
 
     return s3Client; 
 
    } 
 

 
    /** 
 
    * @param bucketName 
 
    * @param s3Client 
 
    */ 
 
    public static void listObjects(String bucketName, AmazonS3 s3Client) { 
 
     System.out.println("Listing objects in bucket " + bucketName); 
 
     ObjectListing objectListing = s3Client.listObjects(new ListObjectsRequest().withBucketName(bucketName)); 
 
     for (S3ObjectSummary objectSummary : objectListing.getObjectSummaries()) { 
 
      System.out.println(" - " + objectSummary.getKey() + " " + "(size = " + objectSummary.getSize() + ")"); 
 
     } 
 
     System.out.println(); 
 
    } 
 

 
    /** 
 
    * @param s3Client 
 
    */ 
 
    public static void listBuckets(AmazonS3 s3Client) { 
 
     System.out.println("Listing buckets"); 
 
     final List<Bucket> bucketList = _s3Client.listBuckets(); 
 
     for (final Bucket bucket : bucketList) { 
 
      System.out.println(bucket.getName()); 
 
     } 
 
     System.out.println(); 
 
    } 
 
}

。 以下はプログラムからのスタックトレースです。

java.lang.IllegalArgumentException 
 
\t at com.amazonaws.internal.config.InternalConfig.loadfrom(InternalConfig.java:235) 
 
\t at com.amazonaws.internal.config.InternalConfig.load(InternalConfig.java:249) 
 
\t at com.amazonaws.internal.config.InternalConfig$Factory.<clinit>(InternalConfig.java:304) 
 
\t at com.amazonaws.util.VersionInfoUtils.userAgent(VersionInfoUtils.java:142) 
 
\t at com.amazonaws.util.VersionInfoUtils.initializeUserAgent(VersionInfoUtils.java:137) 
 
\t at com.amazonaws.util.VersionInfoUtils.getUserAgent(VersionInfoUtils.java:100) 
 
\t at com.amazonaws.ClientConfiguration.<clinit>(ClientConfiguration.java:65) 
 
\t at bluemixtest.BlueMixTest.createClient(BlueMixTest.java:58) 
 
\t at bluemixtest.BlueMixTest.main(BlueMixTest.java:44) 
 
Exception in thread "main" java.lang.ExceptionInInitializerError 
 
\t at com.amazonaws.util.VersionInfoUtils.userAgent(VersionInfoUtils.java:142) 
 
\t at com.amazonaws.util.VersionInfoUtils.initializeUserAgent(VersionInfoUtils.java:137) 
 
\t at com.amazonaws.util.VersionInfoUtils.getUserAgent(VersionInfoUtils.java:100) 
 
\t at com.amazonaws.ClientConfiguration.<clinit>(ClientConfiguration.java:65) 
 
\t at bluemixtest.BlueMixTest.createClient(BlueMixTest.java:58) 
 
\t at bluemixtest.BlueMixTest.main(BlueMixTest.java:44) 
 
Caused by: java.lang.IllegalArgumentException 
 
\t at com.amazonaws.internal.config.InternalConfig.loadfrom(InternalConfig.java:235) 
 
\t at com.amazonaws.internal.config.InternalConfig.load(InternalConfig.java:249) 
 
\t at com.amazonaws.internal.config.InternalConfig$Factory.<clinit>(InternalConfig.java:304) 
 
\t ... 6 more 
 
\t

誰もが根本的な原因を特定するための回避策やアイデアを持っていますか?あなたのスタックトレースエラーに基づいて

答えて

0

は、次の行(58)であると思われる:(EXをcom.amazonaws.*

ClientConfiguration clientConfig = new ClientConfiguration().withRequestTimeout(5000); 

非常に可能性の高い問題は、使用しているJavaライブラリです。 Cloud Object Storage documentationまたはibm-cos-sdk-java github repoで更新されたJavaコードを見ると、サンプルコード(例:com.ibm.cloud.objectstorage.*)のインポートが異なって表示されます。

あなたのpom.xmlファイルには次のものが含まれていることを確認してください:

<dependencies> 
    <dependency> 
     <groupId>com.ibm.cos</groupId> 
     <artifactId>ibm-cos-java-sdk</artifactId> 
     <version>2.0.0</version> 
    </dependency> 
</dependencies> 
関連する問題