0

I have a Maven project in Eclipse created through m2e. It obtains client libraries from a project on GitHub called alternator. The classes seem to be imported fine, in my project, but on running them, it shows a NoClassDefFound error. Here's the code and the error:

Code:

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();
}

}

Error:

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
EternallyCurious
  • 2,345
  • 7
  • 47
  • 78
  • 2
    Look if the dependency is in compile scope and not in provided/test scope. – yatul May 26 '13 at 10:46
  • See what happens if you run 'mvn eclipse:clean eclipse:eclipse' (creates .project and .classpath files) and then import it as a regular java project. – rethab May 26 '13 at 10:48
  • 2
    Please post the fragment of pom.xml where the dependency that is expected to include `AlternatorDBClient` is defined. – AlexR May 26 '13 at 10:57

1 Answers1

2

The AlternatorDBClient class is importing one or more classes which are not on your class path:

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;

You are somehow missing:

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

as a dependency in your project pom. As AlexR stated, please post your pom.

Torsten
  • 6,184
  • 1
  • 34
  • 31
  • Thanks. Adding that dependency did get me past that error but I got another exception posted at : http://stackoverflow.com/questions/16772987/connecting-to-alternator-creates-aws-request-id-null-exception – EternallyCurious May 27 '13 at 12:16