This week's book giveaway is in the General Computing forum. We're giving away four copies of Arduino in Action and have Martin Evans, Joshua Noble, and Jordan Hochenbaum on-line! See this thread for details.
I guess it would be helpful to first know which class could not be found i.e. an application class, one belonging to a third-party library (JAR) etc.
The environment would dicate what to check specifically. Is it a 'simple' application being run from the command-line? If so, is it packaged inside a JAR file? Is the application running inside a servlet container or application server, if so which one? If it is the list of possible things to check could become quite large and very specific. Maybe even varying between different versions of the same container / application server. Though I guess at that point we'd be moving away from 'most common causes' anyway.
Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.
I find the class myself first when I get a ClassNotFoundException. Usually using Eclipse's open > type for a workspace where it is found. Then I check to see if the class giving a ClassNotFoundException is on the classpath of my application. The runtime classpath (java jar dependencies/manifest) not the build path.