A common question that programmers new to Java have is what is the relationship between packages, javac, java, and the NoClassDefFoundError.
It is important to understand that there is a relationship between the package and physical directory structure. For example, if you have a class "MyClass" and it is in a package com.myapp, you would want the following file structure
MyClass.java would have package com.myapp; at the top of the file. Then from the source directory, you could issue the following to compile and place the class file in MyProject/classes/com/myapp/MyClass.class
javac -d ../classes com.myapp.MyClass.java
The result would be that the compiler would create the directories under /classes (note classes needs to exist). Now, to run MyClass, issue the following from the classes directory:
It is important to realize that when compiling and running that the package name, fully qualified class name, and location you issue javac and java from are all important.