1. This article might help answer some of your questions about "how the heck does Java find the right class (either from a .jar, and/or fromt he environment):
class loader basics
2. If you "public static void main (String args)" happens to be in .class file, you start your program like this:
cd CORRECT DIRECTORY
If, on the other hand, your "main ()" happens to be in a .jar, then:
3. You can have many different "static public void main()" entries, each in different public classes. But your program will only ever invoke *one* of them - it all depends on how you start the program with your java command line.
4. A second issue you brought up relates to "packages" and "qualified names". Please read this article, it might help answer some of your questions on this second issue:
5. Finally, there's a special-purpose "JarClassLoader":
I *don't* think JarClassLoader is what you want - but I thought I'd mention it anyway.
'Hope that helps .. PSM