2014-09-05 26 views
6

Đầu tiên của tất cả Im mới để JAVA AWS Eclipse Maven Tomcat ... Im nhận được lỗi sau trong khi thử mã sau .. Lỗi là "HTTP Status 500 - java. lang.NoClassDefFoundError: không thể khởi tạo lớp com.amazonaws.services.sqs.AmazonSQSClient" ...Không thể khởi tạo lớp 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> 

Trả lời

7

java.lang.NoClassDefFoundError chỉ đơn giản có nghĩa là:

"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."

vì vậy bạn đang thiếu một lớp trong thời gian chạy mà đã được biên soạn trước.

Bây giờ xin vui lòng làm điều này:

A- sạch giai đoạn

  1. trong nhật thực đi đến Menubar -> sạch -> sạch tất cả các dự án.
  2. nếu nhật thực không hỗ trợ maven (ví dụ: không có m2e): mở dòng lệnh của bạn (Windows hoặc Linux hoặc bất kỳ thứ gì) và di chuyển đến thư mục chứa dự án eclipse và nhập "mvn clean".
  3. nếu nhật thực không hỗ trợ m2e sau đó, trực tiếp trong nhật thực trên dự án của bạn nhấp chuột phải -> maven -> cập nhật dự án.

B- Cấu hình Giai đoạn:

  1. trong dự án eclipse của bạn, nhấp chuột phải -> Triển khai hội. Bạn sẽ thấy một loại bảng có cột "nguồn" và "Đường dẫn triển khai". nếu không có hàng có nguồn "Maven Dependency", hãy chắc chắn rằng bạn có một cái nhấp chuột vào nút add -> Java Build path Entries -> next button -> "Maven Dependency".

  2. Khi đã thêm "Phụ thuộc Maven", hãy đảm bảo giá trị Đường dẫn triển khai của nó là "WEB-INF/lib".

C- Triển khai và Runtime

  1. nhấp chuột phải vào dự án của bạn -> maven cài đặt

  2. nhấp chuột phải vào dự án của bạn - > chạy như (hoặc gỡ lỗi như) -> chọn bạn tomcat và hơn bắt đầu nó. dự án của bạn phải được cấu hình sau đó.

đảm bảo bạn đã cài đặt plugin eclipse m2e. Nó sẽ làm cho cuộc sống phát triển của bạn trong nhật thực/maven dễ dàng hơn.

+0

Tôi đã bỏ lỡ "Phụ thuộc Maven" (Giai đoạn cấu hình B) .... Thưởng thức anh chàng 100% tiền thưởng .. – Naveenkumar

+0

bởi vì dự án nhật thực của bạn không được tạo thành "dự án Maven".bạn có thể tạo một dự án mới trong Eclipse: File -> New -> Other. sau đó chọn trong Wizard "Maven Project". sau đó cấu hình maven của bạn dưới dạng nguyên mẫu Webapp. Là nó ổn ? – arthur

+0

Vâng, tôi đã tạo ra như dự án web sau đó tôi chuyển đổi sang dự án maven .. Có tôi đã làm một sai lầm .. Im 15day bé java .. :-) sẽ sửa trong tương lai .. – Naveenkumar

Các vấn đề liên quan