Tuesday, May 22, 2012

Java: NoClassDefFoundError for a class inside a jar in your classpath

Here's an obvious one that took me a lot longer to figure out than I wanted.

I have a class (A) that uses another class (B) that sits within a jar.

To launch the class, I used :

java -cp full/path/to/B.jar:./ fully.qualified.name.for.A

I get the NoClassDefFoundError exception for B at the line where I try to instantiate it.

- Made sure the path to B.jar was correct
- Opened up the jar and made sure B was in there, in the correct directory.

Turns out that the jar had been made on Windows with a Manifest classpath in Windows format (C:\etc...) that didn't exist on the Linux machine I was trying the class on.

I rebuilt the jar, making sure the classpath was empty in the manifest, and instead referred to the classes that were in that earlier manifest classpath in the -cp argument.

Problem solved.

No comments:

Post a Comment