Java 找不到Amazon凭据方法
所以我的下一个问题是这个代码。我似乎找不到方法,我的眼睛也没有受过训练。这方面有什么帮助吗Java 找不到Amazon凭据方法,java,servlets,amazon,Java,Servlets,Amazon,所以我的下一个问题是这个代码。我似乎找不到方法,我的眼睛也没有受过训练。这方面有什么帮助吗 package packeging; import java.io.IOException; import java.io.PrintWriter; import java.util.Calendar; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.annotation.WebSer
package packeging;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Calendar;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.amazonaws.HttpMethod;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.auth.BasicAWSCredentials;
import org.apache.http.*;
/**
* Servlet implementation class Hashtastic
*/
@WebServlet("/Hashtastic")
public class Hashtastic extends HttpServlet {
private static final long serialVersionUID = 1L;
private final static String BUCKET_NAME = "idlatestingbucket";//http://s3.amazonaws.com/THESISDB/techy.jpg
private final static String FILE_NAME = "TestPicture/wallpaper-264411.png";
private final static String ACCESS_KEY = "Fakepass";
private final static String SECRET_KEY = "Fakekey";
/**
* Default constructor.
*/
public Hashtastic() {
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter out = response.getWriter();
Calendar cal = Calendar.getInstance();
cal.add(Calendar.SECOND, 1000);
Date expDate = cal.getTime();
out.println(expDate+"\n");
BasicAWSCredentials cre = new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY);
AmazonS3 s3 = new AmazonS3Client(cre);
String url = s3.generatePresignedUrl(BUCKET_NAME, FILE_NAME, expDate, HttpMethod.GET).toString();
out.println(url);
out.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
我得到这个500错误。它说它缺少一种方法。我的lib中有jar和eclipse插件
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Servlet execution threw an exception
root cause
java.lang.NoSuchMethodError: org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager: method <init>()V not found
com.amazonaws.http.ConnectionManagerFactory.createThreadSafeClientConnManager(ConnectionManagerFactory.java:26)
com.amazonaws.http.HttpClientFactory.createHttpClient(HttpClientFactory.java:83)
com.amazonaws.http.AmazonHttpClient.<init>(AmazonHttpClient.java:116)
com.amazonaws.AmazonWebServiceClient.<init>(AmazonWebServiceClient.java:60)
com.amazonaws.services.s3.AmazonS3Client.<init>(AmazonS3Client.java:291)
com.amazonaws.services.s3.AmazonS3Client.<init>(AmazonS3Client.java:273)
packeging.Hashtastic.doGet(Hashtastic.java:48)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.27 logs.
description服务器遇到一个内部错误(),使其无法完成此请求。
例外情况
javax.servlet.ServletException:servlet执行引发异常
根本原因
java.lang.NoSuchMethodError:org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager:未找到方法()V
com.amazonaws.http.ConnectionManagerFactory.createThreadSafeClientConnManager(ConnectionManagerFactory.java:26)
com.amazonaws.http.HttpClientFactory.createHttpClient(HttpClientFactory.java:83)
AmazonHttpClient(AmazonHttpClient.java:116)
AmazonWebServiceClient.(AmazonWebServiceClient.java:60)
amazonaws.services.s3.AmazonS3Client.(AmazonS3Client.java:291)
amazonaws.services.s3.AmazonS3Client(AmazonS3Client.java:273)
packeging.Hashtastic.doGet(Hashtastic.java:48)
javaservlet.http.HttpServlet.service(HttpServlet.java:621)
javaservlet.http.HttpServlet.service(HttpServlet.java:722)
注意,Apache Tomcat/7.0.27日志中提供了根本原因的完整堆栈跟踪。
有什么帮助吗?如果您的类路径中的httpclient jar版本错误,或者如果您的类路径中有多个版本的该jar(例如,httpclient-4.0.1.jar和httpclient-4.1.1.jar)
它也可能是由包含同一类的不同版本的另一个jar引起的。例如,我知道gwt-dev.jar包含ThreadSafeClientConnManager的一个版本。如果是这种情况,那么问题可能可以通过调整构建路径顺序来解决,将httpclient.jar放在gwt-dev.jar之前(或者放在引起问题的另一个jar之前)。根据与此完全相同的异常的经验,很有可能是由于gwt dev出现在类路径中aws java sdk之前,以及gwt dev包含org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager的冲突(在类加载方面)版本造成的 如果您碰巧正在使用Maven,请按如下所示重新排序您的依赖项,并可能向其他维护人员添加一个关于排序重要性的警告
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.3.26</version>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-dev</artifactId>
<version>2.3.0</version>
</dependency>
亚马逊网站
aws java sdk
1.3.26
com.google.gwt
gwt开发
2.3.0
是的,我在你发帖子的时候就知道了。不管怎么说,正是这个问题,谢谢你的帮助!如果应用服务器(如Websphere 8)包含比httpclient-4.1.x更旧的版本,也可能发生这种情况,因为默认构造函数是在4.1中实现的。在这种情况下,您必须将应用程序上的类加载策略从PARENT_FIRST更改为PARENT_LAST,并在EAR/WAR中包含一个4.1+JAR。