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();
}
}
}
- 确保 Amazon S3 中存在存储桶和密钥。将其与 AWS 密钥和密钥一起添加到下面的代码中
- 使用 Java 7 运行上面的代码就成功了。更具体地说,Object md 的返回类型是 String 类型,Date dt 的返回类型是 Date。
- 使用 Java 8 重复它失败并出现 ClassCastException。更具体地说,JetS3t 正在返回一个字符串日期 - 而不是 Date 对象。
我认为有两个标题值 - 一个用于“Last-Modified”,另一个用于小写“last-modified”,但我不知道更多。有人可以帮忙吗?