通过Maven导入的类获取NoClassDef错误

时间:2013-05-26 10:45:16

标签: java eclipse maven amazon-dynamodb

我在Eclipse中创建了一个通过m2e创建的Maven项目。它从GitHub上名为alternator的项目中获取客户端库。在我的项目中,类似乎导入正常,但在运行它时,它显示NoClassDefFound错误。这是代码和错误:

代码:

public class Main{

private AlternatorDBClient client;
private DynamoDBMapper mapper;
private AlternatorDB db;

public static void main(String args[]) throws Exception{
    new Main().run();
}

public void run() throws Exception {
    this.client = new AlternatorDBClient();
    this.mapper = new DynamoDBMapper(this.client);
    this.db = new AlternatorDB().start();
}

}

错误:

Exception in thread "main" java.lang.NoClassDefFoundError: com/michelboudreau/alternator/AlternatorDBClient
at Main.run(Main.java:17)
at Main.main(Main.java:13)
Caused by: java.lang.ClassNotFoundException: com.michelboudreau.alternator.AlternatorDBClient
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 2 more

1 个答案:

答案 0 :(得分:2)

AlternatorDBClient类正在导入一个或多个不在类路径上的类:

import com.amazonaws.*;
import com.amazonaws.handlers.HandlerChainFactory;
import com.amazonaws.http.ExecutionContext;
import com.amazonaws.http.HttpResponseHandler;
import com.amazonaws.http.JsonErrorResponseHandler;
import com.amazonaws.http.JsonResponseHandler;
import com.amazonaws.services.dynamodb.AmazonDynamoDB;
import com.amazonaws.services.dynamodb.model.*;
import com.amazonaws.services.dynamodb.model.transform.*;
import com.amazonaws.transform.JsonErrorUnmarshaller;
import com.amazonaws.transform.JsonUnmarshallerContext;
import com.amazonaws.transform.Unmarshaller;
import com.amazonaws.util.json.JSONObject;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

你不知何故失踪:

 <dependency>
   <groupId>com.amazonaws</groupId>
   <artifactId>aws-java-sdk</artifactId>
 </dependency>

作为项目pom中的依赖项。正如AlexR所说,请发布你的pom。