ライブラリをTomcat の\webapps\WEBアプリケーション\WEB-INF\lib に追加したのに、NoClassDefFoundErrorが出る場合、eclipse側でうまくwebAppライブラリが追加できてない事がある。
eclipseのビルド・パスの構成の「webAppライブラリー」に追加されてない時は、その点があやしい。その場合、プロジェクトエクスプローラのWEB-INFのlibに直接、ライブラリ(.jar)をドラッグ&ドロップすれば追加される。

ビルド・パスの構成の「webAppライブラリー」は動的にライブラリを追加する感じになっているが、どうもこれが効いてないようだ。ちなみにcommon\libにいれても動くことは、動く。JDBCドライバなんかはこちらで共有した方が安全という意見もあり。
補足:(今回の場合関係ないが)、クラスローダーの順番も大事らしい。
--クラスローダの階層構造----------------------------------------------
システムクラスローダ(rt.jar などを読み込む)
L Tomcatののクラスローダ(servlet.jar など)
L Webアプリケーション毎のクラスローダ(WEB-INF/lib,classes)
-----------------------------------------------------------------------------
クラスローダには親子関係があります。
そこで以下の制約が生まれます
・子クラスローダから親クラスローダのクラスは見える
・親クラスローダから子クラスローダのクラスは見えない
これにより複数の子クラスローダで同じ名前のクラスを別々の空間で読み込むことができる仕組みになっています。
今回の場合 Web アプリケーションのクラスローダで読み込まれるクラスを、親クラスローダから読み込めないために発生します。
なので、JDBCドライバを使いたいクラスが存在するのと同じかそれより親のクラスローダでJDBCドライバが読み込めないといけません。
出典
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=28912&forum=12&3
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=37347&forum=12&5
