4

Java SDK を使用して s3 にファイルをアップロードしようとしています。このコードは、jdk1.6.0_26 を実行している Windows 7 マシンでは正常に動作しますが、Java(TM) SE ランタイム環境 (ビルド 1.7.0-b147) を搭載したサーバー、Ubuntu Server 10.04 で実行すると、次のエラーが表示されます。https://github.com/amazonwebservices/aws-sdk-for-java/blob/master/src/main/java/com/amazonaws/auth/AbstractAWSSigner.javaから:

com.amazonaws.AmazonClientException: Unable to calculate a request signature: null Stack trace : com.amazonaws.auth.AbstractAWSSigner.signAndBase64Encode(AbstractAWSSigner.java:71)
com.amazonaws.auth.AbstractAWSSigner.signAndBase64Encode(AbstractAWSSigner.java:55)
com.amazonaws.services.s3.internal.S3Signer.sign(S3Signer.java:101)
com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:234)
com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:169)
com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:2597)
com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1025)

s3 への呼び出し:

AWSCredentials c = new BasicAWSCredentials(accessKey, secretKey);
AmazonS3Client client = new AmazonS3Client(c);
String key = station + "/" + file.getName();        
client.putObject(new PutObjectRequest(bucket, key, file));      

私は Java が初めてで、さらにトラブルシューティングする方法がわかりません。

4

1 に答える 1

3

私の直感は、サーバーで使用しているJDK/JREには適切なcrypo/JCEがないということです。高暗号化パックをインストールするか、適切な暗号化を含む新しい JDK/JRE をインストールしてください。

Java Cryptography Extension は下部からダウンロードできます: http://www.oracle.com/technetwork/java/javase/downloads/index.html

于 2012-04-24T16:28:13.640 に答える