When you use pacakges, you are esseintally telling the complier that you are going to be placing and organizeing your code into sub-directories. A package is really nothing more than a directory on the filesystem. However, since Java is cross platform, you can't really use a normal directory notation, as Linux slashes are different from PC DOS slashes. So, Java uses a dot notation, and coins the cute little term 'package'
Getting packaged code to compile can definitely be annoyting. I put together a short multimedia tutorial that shows you exactly where a java source file should go when you want to package compile it, and how to run the source code generated by the compilation: