2011.09.15

【FAQ】『SpringによるWebアプリケーションスーパーサンプル 第2版』

SpringによるWebアプリケーションスーパーサンプル 第2版

●質問:3-1のサンプルに関し
 3-1のサンプルをEclipse3.6とTomcat6で動作させる以下のとエラーが発生します。
 考えられる原因はなんでしょうか。

org.springframework.beans.factory.CannotLoadBeanClassException
: Cannot find class [controller.IndexController] for bean with name
'indexcontroller' defined in ServletContext resource
[/WEB-INF/shopping3-1-servlet.xml];
nested exception is java.lang.ClassNotFoundException:
controller.IndexController

●回答:
 ClassNotFoundExceptionという例外が発生しています。
 controller.IndexControllerというクラスが見つからないためです。
 これは初歩的な原因で発生する例外で、いくつもの原因が考えられます。

 最も確実な解決方法として、3-1.warをTomcatの直下にあるwebappsフォルダにコピーし直してみてください。Tomcatを単体で起動すると、アプリケーションを実行できます。

 Eclipse上で動作しない表面上の理由は、Tomcatのデプロイフォルダ以下のWEB-INF/classes/controllerフォルダにIndexController.classがないためです。

(WTPで実行する場合、デプロイフォルダはworkspaceフォルダ.metadata.pluginsorg.eclipse.wst.server.coretmp0wtpwebappsなどです。
Sysdeo Tomcatプラグインはworkspaceフォルダ3-1がそのまま使われます)

・IndexControllerクラスにコンパイルエラーが発生していないか
・IndexControllerクラスがソースフォルダ以下のcontrollerフォルダにあるか
・IndexControllerクラスのパッケージ宣言がcontrollerパッケージになっているか

を確認します。

ない場合は、上記の3点のいずれかが満たされていないと思われます。