我正在尝试连接到我的AWS S3存储桶,以便根据这些链接的说明上传文件。
http://docs.aws.amazon.com/AmazonS3/latest/dev/UploadObjSingleOpJava.html http://docs.aws.amazon.com/AWSSdkDocsJava/latest/DeveloperGuide/credentials.html#credentials-指定提供者
出于某种原因,当它尝试实例化AmazonS3Client对象时,它抛出了一个被吞并的异常,并退出了我的Struts操作。因此,我没有太多的信息可以调试。
我尝试了使用默认凭证配置文件(~/.aws/credentials)方法和显式密钥和访问密钥(新的BasicAWSCredentials(access_key_id,secret_access_ key)
/**
* Uses the secret key and access key to return an object for accessing AWS features
* @return BasicAWSCredentials
*/
public static BasicAWSCredentials getAWSCredentials() {
final Properties props = new Properties();
try {
props.load(Utils.class.getResourceAsStream("/somePropFile"));
BasicAWSCredentials credObj = new BasicAWSCredentials(props.getProperty("accessKey"),
props.getProperty("secretKey"));
return credObj;
} catch (IOException e) {
log.error("getAWSCredentials IOException" + e.getMessage());
return null;
}
catch (Exception e) {
log.error("getAWSCredentials Exception: " + e.getMessage());
e.printStackTrace();
return null;
}
}
********* 代码尝试S3访问 **********
try {
AmazonS3 s3client = new AmazonS3Client(Utils.getAWSCredentials());
//AmazonS3 s3client = new AmazonS3Client(new ProfileCredentialsProvider());
String fileKey = "catering/" + catering.getId() + fileUploadsFileName.get(i);
System.out.println("Uploading a new object to S3 from a file\n");
s3client.putObject(new PutObjectRequest(
Utils.getS3BucketName(),
fileKey, file));
// Save Attachment record
Attachment newAttach = new Attachment();
newAttach.setFile_key(fileKey);
newAttach.setFilename(fileUploadsFileName.get(i));
newAttach.setFiletype(fileUploadsContentType.get(i));
newAttach = aDao.add(newAttach);
} catch (AmazonServiceException ase) {
System.out.println("Caught an AmazonServiceException, which " +
"means your request made it " +
"to Amazon S3, but was rejected with an error response" +
" for some reason.");
System.out.println("Error Message: " + ase.getMessage());
System.out.println("HTTP Status Code: " + ase.getStatusCode());
System.out.println("AWS Error Code: " + ase.getErrorCode());
System.out.println("Error Type: " + ase.getErrorType());
System.out.println("Request ID: " + ase.getRequestId());
fileErrors.add(fileUploadsFileName.get(i));
} catch (AmazonClientException ace) {
System.out.println("Caught an AmazonClientException, which " +
"means the client encountered " +
"an internal error while trying to " +
"communicate with S3, " +
"such as not being able to access the network.");
System.out.println("Error Message: " + ace.getMessage());
fileErrors.add(fileUploadsFileName.get(i));
} catch(Exception e) {
System.out.println("Error Message: " + e.getMessage());
}
它永远不会超过亚马逊S3客户端=新的亚马逊S3客户端(Utils.getAWSCredentials());
行。我已验证基本AWS证书对象是否包含正确的字段值。根据此信息,可能出了什么问题来阻止 S3 客户端连接?
** 编辑 **
我在生成的堆栈跟踪中发现了这个有用的信息:
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)在java.lang.Thread.run(Thread.java:745)原因:java.lang.NoClassDefFoundError:无法初始化类com.amazonaws.ClientConfiguration在com.amazonaws.services.s3.AmazonS3Client。(AmazonS3Client.java:384)在gearup.actions.CateringController.assignAttachments(CateringController.java:176)在gearup.actions.CateringController.update(CateringController.java:135)
之前,我尝试了一个创建ClientConfiguration对象并将协议设置为HTTP的演示。然而,我遇到了一个问题:调用<code>new ClientConfiguration() 构造函数引发了NullPointerException。我是否遗漏了一些要求?
这非常奇怪,因为< code>aws-java-sdk-s3明确依赖于< code>aws-java-sdk-core(参见< code>pom.xml)。这里有些可疑。< br >对我来说,事实证明这是apache httpclient
版本的冲突(我的一个POM中的版本比amazon库使用的版本旧)。< br >我从其他人那里听说过类似的冲突,例如< code>jackson。
因此,对于这种情况中的任何人来说,我建议您在Eclipse中打开POM.xml
时查看依赖关系层次结构
(或使用mvn依赖项:树
。有关详细信息,请参阅此处)。
此外,请检查 AWS 抛出的第一条错误消息。似乎它没有作为所有进一步堆栈跟踪中的原因链接,这只告诉你一些类似java.lang.NoClassDef发现错误:无法初始化类网站
。
看起来您的项目缺少一些依赖项。
您显然已经在项目中配置了< code>aws-java-sdk-s3 jar,因为它正在解析AmazonS3Client,但是这个jar也依赖于< code>aws-java-sdk-core。您需要将核心jar添加到您的类路径中。
我无法获取上一个已知位置。我已经在谷歌控制台中启用了地理编码API和谷歌地点API的Android。我在清单文件中添加了 API 密钥: 但我不断在控制台中收到一条消息:“无法连接到Google API客户端:连接结果{状态代码=API_UNAVAILABLE,分辨率=空}” 更新 我使用谷歌示例 onConnected和onConnectionFailed不调用。 而且我也使用Android反应
问题内容: 一切工作正常,但问题是当我在地图上定位时什么都没发生我注册了我的谷歌地图,我在这里做了所有说明 http://code.google.com/intl/pl/android/add-ons/google- apis/mapkey.html 我可以看到地图,可以放大和缩小,但是当我搜索位置时,会在logcat中找到它 这是我的Java代码 有什么帮助吗?提前致谢 问题答案: 如果您在AP
我正在尝试使用Spring Cloud项目实现文件上传到Amazon S3存储桶。 根据文件: “可以在应用程序代码中轻松创建com.amazonaws.services.s3.transfer.TransferManager,并将其注入已使用Spring Cloud AWS资源加载器配置创建的预配置的com.amazon.services.s3.AmazonS3客户端。” 但此示例代码不起作用:
我有一个小程序,其方法从浏览器中的JavaScript函数调用。该方法最终将文件发送到AmazonS3 bucket。但是,当该方法尝试创建AmazonS3Client时,该方法失败,不会显示任何错误。 该方法中代码的相关代码片段是: try/catch块中的任何消息都不会打印。方法的其余代码(为简洁起见,此处未显示)也不会被触发。 jar文件编译无误。我用的是jdk 1.7.0_51和amazo
我编写了一个简单的HBase客户端程序来在我的HBase集群(1个主服务器和3个区域服务器)中执行CRUD操作。Zookeeper实例仅在主服务器中运行,仲裁包括所有4台服务器。集群运行良好,可以使用YCSB客户端执行读/写操作(意味着服务器/Zookeeper端没有任何错误)。 现在,在eclipse类路径中,我添加了所有HBase库和hbase-0.94.7.jar(包含hbase-defau
我有一个mongo db实例在linux系统中运行,我正试图从windows系统连接到它。当我启用身份验证时,我会不断获得 数据库“管理员”的凭据无效... 我的用户设置看起来像 显示用户{“_id”:“test.myuser”,“user”:“myuser”,“db”:“admin”,“roles”:[{“role”:“readWrite”,“db”:“admin”},{“role”:“user