Nav*_*mar 6 java eclipse tomcat amazon-web-services maven
首先,我是JAVA AWS Eclipse Maven Tomcat的新手...我在尝试下面的代码时遇到以下错误.错误是"HTTP状态500 - java.lang.NoClassDefFoundError:无法初始化类com.amazonaws.services.sqs. AmazonSQSClient" ...
package sms.pii.webservice;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.sqs.AmazonSQS;
import com.amazonaws.services.sqs.AmazonSQSClient;
import com.amazonaws.services.sqs.model.*;
public class AWSSimpleQueueServiceUtil {
public BasicAWSCredentials credentials;
public AmazonSQS sqs;
public AWSSimpleQueueServiceUtil(){
try{
String accessKey= "xxxxxx";
String secretKey= "xxxxxxxx";
this.credentials = new BasicAWSCredentials(accessKey,secretKey);
this.sqs = new AmazonSQSClient(this.credentials);
//this.sqs.setEndpoint("https://sqs.ap-southeast-1.amazonaws.com");
}
catch(Exception e){
System.out.println("exception while creating awss3client : " + e);
}
}
public String createNewQueue(String queueName){
CreateQueueRequest createQueueRequest = new CreateQueueRequest(queueName);
String queueUrl = this.sqs.createQueue(createQueueRequest).getQueueUrl();
return queueUrl;
}
public String getQueueUrlByName(String queueName){
GetQueueUrlRequest getQueueUrlRequest = new GetQueueUrlRequest(queueName);
return this.sqs.getQueueUrl(getQueueUrlRequest).getQueueUrl();
}
public ListQueuesResult listAllQueues(){
return this.sqs.listQueues();
}
Run Code Online (Sandbox Code Playgroud)
}
package sms.pii.webservice;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import sms.pii.webservice.AWSSimpleQueueServiceUtil;
@Path("/Queue")
public class TestSQS {
@GET
@Path("/Name/{name}")
@Produces(MediaType.APPLICATION_JSON)
public Student produceJSON( @PathParam("name") String name ) {
Student st = new Student(name, "kumar",55,21);
return st;
}
@GET
@Path("/createQueue/{name}")
@Produces(MediaType.TEXT_PLAIN)
public String createQueue(@PathParam("name") String queueName){
AWSSimpleQueueServiceUtil test = new AWSSimpleQueueServiceUtil();
return test.createNewQueue(queueName);
}
@GET
@Path("/getQueueUrl/{name}")
@Produces(MediaType.TEXT_PLAIN)
public String getQueueUrl(@PathParam("name") String queueName){
AWSSimpleQueueServiceUtil test = new AWSSimpleQueueServiceUtil();
return test.getQueueUrlByName(queueName);
}
}
Run Code Online (Sandbox Code Playgroud)
的pom.xml
<dependencies>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.9</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.9</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.8.9.1</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
java.lang.NoClassDefFoundError只是意味着:
"嘿伙计,当你(自动)在Eclipse(和/或Maven)中构建项目(编译时)时,你的IDE能够找到这个类com.amazonaws.services.sqs.AmazonSQSClient.但是当你想要运行时在服务器上(运行时),我找不到它了."
所以你在运行时缺少一个以前编译过的类.
现在请这样做:
A-清洁阶段
B-配置阶段:
在你的eclipse项目中,右键单击 - >部署程序集.您将看到一种包含"source"和"Deploy Path"列的表.如果没有源"Maven Dependency"的行,请点击按钮添加 - > Java Build path Entries - > next button - >"Maven Dependency".
添加"Maven依赖关系"后,请确保其部署路径值为"WEB-INF/lib".
C-部署和运行时
右键单击您的项目 - > maven install
右键单击您的项目 - >运行为(或调试为) - >选择您的tomcat而不是启动它.那时你的项目必须已经配置好了.
确保你已经安装了eclipse插件m2e.它将使您在eclipse/maven中的开发生活更轻松.