无法初始化类com.amazonaws.services.sqs.AmazonSQSClient

问题描述:

首先,我是新的JAVA AWS Eclipse Maven Tomcat ...尝试下面的代码时遇到以下错误..错误是“HTTP状态500 -java。 lang.NoClassDefFoundError:无法初始化类com.amazonaws.services.sqs.AmazonSQSClient” ......无法初始化类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(); 
} 

}

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); 
} 
} 

的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> 

java.lang.NoClassDefFoundError仅仅意味着:

"Hey dude, when you (automatically) built your project in Eclipse (and/or in Maven) (compilation time), your IDE was able to find this class com.amazonaws.services.sqs.AmazonSQSClient. But when you want to run on the server (runtime) , I can't find it any-more."

所以你缺少在运行时类是以前编译。

现在,请执行以下操作:

A-清洗阶段

  1. 在日食进入菜单栏 - >清理 - >清理所有项目。
  2. 如果eclipse不支持maven(例如没有m2e):打开你的命令行(Windows或Linux或其他)并移动到包含你的eclipse项目并键入“mvn clean”的目录。
  3. 如果eclipse确实支持m2e,那么直接在eclipse中右键单击 - > maven - > update项目。

B-配置阶段

    在Eclipse项目
  1. ,右击 - >部署大会。您将看到一列包含“源”和“部署路径”列的表。如果没有源代码为“Maven Dependency”的行,请通过单击按钮添加 - > Java构建路径条目 - >下一个按钮 - >“Maven Dependency”确保您的行。

  2. 一旦添加了“Maven Dependency”,请确保其部署路径值为“WEB-INF/lib”。

  3. C-部署和运行

    1. 右键单击您的项目 - >行家安装

    2. 您的项目右击 - >运行(或调试为) - >选择你的tomcat,然后启动它。您的项目必须已经配置完成。

    3. 确保你已经安装了eclipse插件m2e。这将使您在eclipse/maven中的开发生活更轻松。

    开始=>
开始=>
+0

我错过了“Maven Dependency”(B-配置阶段)....享受100Bounty花花公子.. – Naveenkumar 2014-09-08 09:57:10

+0

它因为你的eclipse项目并没有被创建为“Maven项目”。你可以在Eclipse中创建一个新的项目:文件 - >新建 - >其他。然后在向导“Maven Project”中选择。然后将您的maven配置为Webapp原型。可以吗? – arthur 2014-09-08 10:01:02

+0

是啊,我已经创建为web项目,然后我转换为maven项目..在那里我做了一个错误..我15天宝宝到java .. :-)将在未来正确.. – Naveenkumar 2014-09-08 10:14:19