2014-09-05 97 views
6

首先,我是新的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> 

回答

7

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項目
  • ,右擊 - >部署大會。您將看到一列包含「源」和「部署路徑」列的表。如果沒有源代碼爲「Maven Dependency」的行,請通過單擊按鈕添加 - > Java構建路徑條目 - >下一個按鈕 - >「Maven Dependency」確保您的行。

  • 一旦添加了「Maven Dependency」,請確保其部署路徑值爲「WEB-INF/lib」。

  • C-部署和運行

  • 右鍵單擊您的項目 - >行家安裝

  • 您的項目右擊 - >運行(或調試爲) - >選擇你的tomcat,然後啓動它。您的項目必須已經配置完成。

  • 確保你已經安裝了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

    相關問題