java with Amazon AWS NoSuchFieldError



java与Amazon AWS NoSuchFieldError

这是控制台日志:

Exception in thread "AWT-EventQueue-0" java.lang.NoSuchFieldError: INSTANCE
at org.apache.http.client.utils.URLEncodedUtils.parse(URLEncodedUtils.java:246)
at org.apache.http.client.utils.URLEncodedUtils.parse(URLEncodedUtils.java:225)
at org.apache.http.client.utils.URIBuilder.parseQuery(URIBuilder.java:95)
at org.apache.http.client.utils.URIBuilder.digestURI(URIBuilder.java:165)
at org.apache.http.client.utils.URIBuilder.<init>(URIBuilder.java:90)
at org.apache.http.client.utils.URIUtils.rewriteURI(URIUtils.java:138)
at org.apache.http.impl.client.DefaultRequestDirector.rewriteRequestURI(DefaultRequestDirector.java:353)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:476)
at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:863)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:57)
at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:837)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:607)
at com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:376)
at com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:338)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:287)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3826)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3778)
at com.amazonaws.services.s3.AmazonS3Client.listObjects(AmazonS3Client.java:610)
at net.pocketsurvey.cloud.Amazon.listObjectsInBucket(Amazon.java:93)

底线是,我的代码将在哪里移交给亚马逊的S3。代码如下:

public static ObjectListing listObjectsInBucket(String bucketName,
  String key) throws Exception {
  ObjectListing list = null;
  AmazonS3Client client = Client.s3(Client.DESKTOP);
  try {
    boolean b_exists = client.doesBucketExist(bucketName);
    boolean o_exists = client.doesObjectExist(bucketName, key);
    if(b_exists) {
      list = client.listObjects(bucketName, key);
    }
  } catch ( AmazonServiceException e){
    String  err =  e.getErrorMessage();
    e.printStackTrace();
  } catch ( AmazonClientException e){
    e.printStackTrace();
  } catch ( Exception e){
    e.printStackTrace();
  }
  return list;
  }

"client.listObjects"就是它爆炸的地方。

使用的库包括:aws-java-sdk-1.10.77.jarhttpclient-osgi-4.3.jarorg.apache.httpcomponents.httpcore_4.2.1.jar

"b_exists"为true,但"o_exists"返回为false,即使密钥最肯定存在。

我使用的凭据适用于其他事情,如电子邮件和下载已知对象,即完整的密钥字符串。但是,试图使用部分关键字字符串(如"hhs/")获得列表时,我得到了上面的eror。

另外,"捕获"不会捕获它。

代码目前在UI线程上运行,但我在它自己的线程上尝试过,得到了类似的结果。

平台是Windows7。

如有任何帮助,我们将不胜感激。

问题排序-库不匹配。

"aws-java-sdk-1.10.77.jar"需要"org.apache.httpcomponents.httpcore_4.4.4.jar"作为构建路径。

最新更新