使用AWS SDK for java运行程序时出现NoClassDefFoundError

时间:2012-06-13 16:02:43

标签: java amazon-web-services noclassdeffounderror

我正在尝试运行AWS SDK for Java附带的DynamoDB示例。我是用eclipse做的,并将aws-java-sdk-1.3.2.jar文件添加到项目的构建路径中。编译当然很好,但我得到一个名为NoClassDefFoundError的运行时异常。 我知道这意味着该类在编译时已存在,但在运行时无法找到。 我尝试将jar文件添加到env变量 - 没有帮助。 我也检查过,在其他项目中使用其他外部jar文件没有问题。 在Windows和Linux上都存在同样的问题。

帮助任何人?

谢谢,本。

堆栈追踪:

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)

2 个答案:

答案 0 :(得分:12)

aws-java-sdk-1.3.2 文件夹中,您会找到另一个名为“ 第三方 ”的文件夹。 Amazon SDK使用的所有第三方文件都在该文件夹中,包括Apache Common Logging。您必须将所需文件与AWS SDK jar文件一起添加到类路径中。

答案 1 :(得分:1)

看起来您的AWS JAR需要一些额外的JAR来实现已使用但非AWS的项目(例如在您的案例中记录)。

如果您下载了包含“lib”目录的distributable,则可能只是将Eclipse配置为使用AWS JAR而不是所有必需的JAR,包括AWS以及“lib”目录中的所有JAR。