yep, you do. The program you wrote says "Hey! You three guys, come here I need you!" and so they need to be there for that program to do it's thing.
Take the CAA Chatroom for example, Java based. Here, we have an archive of many class files,
http://www.christiananime.net/chat/ChatEverywhere.jar. Now, decompiling chat.class, we see many many imports... some of them part of the standard Java package and some of them not. Here are three examples.
import org.chateverywhere.InputDialog;
import org.chateverywhere.InputStack;
import org.chateverywhere.MD5;
These three are all included in the ChatEverywhere.jar file. WHen Chat.class is invoked, it automaticly sees that it needs these three classes and invokes them as well to run along with it. If they were not there, the chatroom would be broken, or the coding for the chatroom would be very different and a lot more complex.
In short, when compiling a .java file from .java to byte code, it doesn't import the classes you tell it to import and compile them into the output .class file. All it does is keep in the byte code the fact that the program needs those classes. So, if that program works on your computer, it will work on all of ours if you can hit us up with those three missing classes...