gpt4 book ai didi

java - 通过 Jets3t 读取 aws-s3 的 LastModifiedDate 在 Java-8 中失败,但在 Java-7 中成功

转载 作者:太空宇宙 更新时间:2023-11-04 13:51:03 25 4
gpt4 key购买 nike

JetS3t 在 Java 8 中无法获取现有 S3 对象的 LastModifiedDate,但在 Java 7 中却成功。

package JsTest

import org.jets3t.service.S3Service;
import org.jets3t.service.ServiceException;
import org.jets3t.service.impl.rest.httpclient.RestS3Service;
import org.jets3t.service.model.S3Object;
import org.jets3t.service.security.AWSCredentials;

public class Jetsettester {

public static void main(String[] args) {
String awsAccessKey = "<access_key>";
String awsSecretKey = "<secret>";
AWSCredentials awsCredentials = new AWSCredentials(awsAccessKey, awsSecretKey);
S3Service s3Service = new RestS3Service(awsCredentials);
try {
S3Object objectDetailsOnly = (S3Object) s3Service.getObjectDetails("ENTER_BUCKET_NAME", "EXISTING_SAMPLE_KEY.TXT");
Object md = objectDetailsOnly.getMetadata("Last-Modified"); // Object type is 'String' in Java 8 - and 'Date' in Java 7
Date dt = objectDetailsOnly.getLastModifiedDate(); // Hence, raises ClassCastException only in Java 8 . In Java 7 - it is correct Date class
} catch (ServiceException e) {
e.printStackTrace();
}
}
}
  1. 确保 Amazon S3 中存在存储桶和 key 。将其与 AWS key 和 key 一起添加到下面的代码中
  2. 使用 Java 7 运行上述代码,运行成功。更具体地说,Object md 的返回类型是 String 类型,Date dt 的返回类型是 Date 类型。
  3. 在 Java 8 中重复此操作,失败并出现 ClassCastException。更具体地说,JetS3t 返回一个字符串日期 - 而不是 Date 对象。

我认为有两个 header 值 - 一个用于“Last-Modified”,另一个用于小写“last-modified”,但我不知道更多。有人可以帮忙吗?

最佳答案

这是 JetS3t 0.9.3 中的一个错误。我提出了这个错误,James Murty 去年在 0.9.4 版本中慷慨地修复了它将其发布在这里以防其他人遇到它。详情bitbucket bug link for jets3t

关于java - 通过 Jets3t 读取 aws-s3 的 LastModifiedDate 在 Java-8 中失败,但在 Java-7 中成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30270061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com