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

Ben*_*non 10 java noclassdeffounderror amazon-web-services

我试图运行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)
Run Code Online (Sandbox Code Playgroud)

小智 13

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


Edw*_*uck 2

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

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

  • 你是对的!构建路径应包含 aws-java-sdk-1.3.2.jar ,运行时路径(引导条目)应包含 jackson-core-asl-1.8.7.jar、 httpclient-4.1.1.jar 、 httpcore-4.1。 jar、commons-logging-1.1.1.jar、commons-codec-1.3.jar。 (3认同)