2013-05-26 3 views
0

У меня есть проект Maven в Eclipse, созданный через m2e. Он получает клиентские библиотеки из проекта GitHub, называемого генератором. В моем проекте классы, кажется, импортированы отлично, но при запуске они показывают ошибку NoClassDefFound. Вот код и ошибка:Получение NoClassDef Ошибка для классов, импортированных через Maven

Код:

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 
+2

Посмотрите, находится ли зависимость в области компиляции, а не в области предоставления/проверки. – yatul

+0

Посмотрите, что произойдет, если вы запустите «mvn eclipse: clean eclipse: eclipse» (создает файлы .project и .classpath), а затем импортируйте его как обычный Java-проект. – rethab

+2

Пожалуйста, разместите фрагмент pom.xml, где определена зависимость, которая должна включать в себя 'AlternatorDBClient'. – AlexR

ответ

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> 

как зависимость в вашем проекте ПОМ. Как сказал AlexR, пожалуйста, напишите свой pom.

+0

Спасибо. Добавление этой зависимости заставило меня пройти эту ошибку, но я получил другое исключение, размещенное по адресу: http://stackoverflow.com/questions/16772987/connecting-to-alternator-creates-aws-request-id-null-exception – EternallyCurious