2012-06-13 28 views
10

Tôi đang cố gắng chạy mẫu DynamoDB đi kèm với SDK AWS cho java. Im thực hiện nó bằng cách sử dụng nhật thực và thêm tệp aws-java-sdk-1.3.2.jar vào đường dẫn xây dựng của dự án. Việc biên dịch tất nhiên diễn ra tốt đẹp, nhưng tôi nhận được ngoại lệ thời gian chạy có tên là NoClassDefFoundError. Tôi biết điều đó có nghĩa là lớp học đã có lúc biên dịch nhưng không thể tìm thấy trong thời gian chạy. Tôi đã thử thêm tệp jar vào biến env - không được trợ giúp. Tôi cũng đã kiểm tra và không có vấn đề gì khi sử dụng các tệp jar bên ngoài khác trên các dự án khác. Cùng một vấn đề trên cả hai cửa sổ và Linux.NoClassDefFoundError trong khi chạy chương trình bằng AWS SDK cho java

giúp đỡ bất kỳ ai?

Cảm ơn, ben.

Stack Trace:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 
    at com.amazonaws.services.dynamodb.AmazonDynamoDBClient.<clinit>(AmazonDynamoDBClient.java:62) 
    at AmazonDynamoDBSample.init(AmazonDynamoDBSample.java:62) 
    at AmazonDynamoDBSample.main(AmazonDynamoDBSample.java:67) 
+0

Hãy đăng theo dõi ngăn xếp của bạn? –

+1

bạn có tệp jar thư viện commache commons được thêm vào không? nó có thể được tìm thấy ở đây: http://commons.apache.org/logging/download_logging.cgi –

+1

Vâng, cả codec và HTTP client. Tất cả được thêm vào đường dẫn xây dựng –

Trả lời

1

Dường như JAR AWS của bạn cần có một vài lọ thêm để thực hiện sử dụng, nhưng các mặt hàng phi AWS (như trong trường hợp khai thác gỗ của bạn).

Nếu bạn tải xuống phân phối có chứa thư mục "lib", bạn chỉ định cấu hình Eclipse để sử dụng AWS JAR thay vì tất cả các JAR bắt buộc, bao gồm AWS và có thể tất cả các JAR trong thư mục "lib".

+0

lib có aws-java-sdk-1.3.2-sources.jar và aws-java-sdk-1.3.2-javadoc.jar trong đó. Chúng không liên quan đúng không? tôi cũng có một thư mục được gọi là bên thứ ba, thư mục này chứa một commons-logging-1.1.1.jar và nó cũng nằm trong đường dẫn xây dựng ... –

+0

Bạn có quyền đoán rằng các nguồn và các javadoc lọ không phải là thứ bạn cần thêm. Tệp commons-logging-1.1.1.jar của bên thứ ba chứa lớp bị thiếu mà bạn tìm kiếm. Ngoài ra, bạn có thể định cấu hình thư viện AWS thành "bao gồm nguồn" và sau đó kết nối tệp JAR "nguồn" nếu bạn muốn gỡ lỗi vào thư viện aws. –

+0

commons-logging-1.1.1.jar đã nằm trong đường dẫn xây dựng. tôi cũng tìm thấy org/apache/commons/logging/LogFactory.class bằng tay bên trong bình. bạn có thể nghĩ ra bất kỳ lý do gì khiến JVM không tìm thấy nó? –

12

Bên trong AWS-java-sdk-1.3.2 thư mục mà bạn sẽ tìm thấy một thư mục có tên "của bên thứ ba". Tất cả các tệp của bên thứ ba được Amazon SDK sử dụng đều nằm trong thư mục đó, bao gồm cả Apache Common Logging. Bạn phải thêm các tệp cần thiết vào đường dẫn lớp của mình cùng với tệp jar AWS SDK.

+0

Bạn có thể cung cấp một liên kết web đến "bên thứ ba" ma thuật đó không? Trong sự phụ thuộc jar không có thư mục như vậy. – Cherry

+1

Omg ... Tôi đã khoanh tròn vấn đề chính xác này theo cách dài ... Thư viện của bên thứ ba ... con trai của một ... – WernerCD

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