使用AWS SDK for java运行程序时出现NoClassDefFoundError
我试图运行AWS SDK for Java附带的DynamoDB示例。 我是用eclipse做的,并将aws-java-sdk-1.3.2.jar
文件添加到项目的构建路径中。 编译当然很好,但我得到一个名为NoClassDefFoundError
的运行时exception。 我知道这意味着该类在编译时存在但在运行时无法找到。 我尝试将jar文件添加到env变量 – 没有帮助。 我也检查过,在其他项目中使用其他外部jar文件没有问题。 Windows和Linux上的问题相同。
帮助任何人?
谢谢,本。
堆栈跟踪:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory at com.amazonaws.services.dynamodb.AmazonDynamoDBClient.(AmazonDynamoDBClient.java:62) at AmazonDynamoDBSample.init(AmazonDynamoDBSample.java:62) at AmazonDynamoDBSample.main(AmazonDynamoDBSample.java:67)
在aws-java-sdk-1.3.2文件夹中,您将找到另一个名为“ 第三方 ”的文件夹。 Amazon SDK使用的所有第三方文件都在该文件夹中,包括Apache Common Logging。 您必须将所需文件与AWS SDK jar文件一起添加到类路径中。
看起来您的AWS JAR需要一些额外的JAR来实现已使用但非AWS项目(例如您的案例日志记录)。
如果您下载了包含“lib”目录的distributable,则可能只是将Eclipse配置为使用AWS JAR而不是所有必需的JAR,包括AWS以及“lib”目录中的所有JAR。