Struts 2でClassNotFoundExceptionが発生したときの対処方法

火曜日 , 15, 12月 2015 Leave a comment

ひと頃のような勢いがなくなりトンと話題にのぼらなくなったApache Strutsですが、Struts 2がうまく適合する場面はたくさんあると思います。
以前作成したシステムからweb.xmlを引っこ抜いて…環境と作ろうとすると、以下のような警告が表示されることがあります。 

***********************************************************************
*                               WARNING!!!                            *
*                                                                     *
* >>> FilterDispatcher <<< is deprecated! Please use the new filters! *
*                                                                     *
*           This can be a source of unpredictable problems!           *
*                                                                     *
*              Please refer to the docs for more details!             *
*            http://struts.apache.org/2.x/docs/webxml.html            *
*                                                                     *
***********************************************************************

FilterDispatcherが古くなったようなので、新しい方法をStruts 2のサイトで調べて、書かれていたことをweb.xmlコピペします。
すると、TomcatやJEEサーバを起動すると、見事に動きません。ログを確認すると下記のようなメッセージが記載されます。

java.lang.InstantiationException
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:135)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:5329)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:5943)
at com.sun.enterprise.web.WebModule.start(WebModule.java:691)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1041)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:1024)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:747)
at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2286)
at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1932)

….

Caused by: java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.filter.ng.StrutsPrepareAndExecuteFilter
at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1783)
at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1633)

org.apache.struts2.dispatcher.filter.ng.StrutsPrepareAndExecuteFilterが見つからないらしいです。
必要なJARが揃っているか構成設定は間違っていないか調べたくなるところですが…
コピペ元の公式サイトの記述が間違っています。

 ×公式サイトに記載されている内容
org.apache.struts2.dispatcher.filter.ng.StrutsPrepareAndExecuteFilter

○実際にJARファイルに格納されている内容
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

ご確認ください。

Tags:

Please give us your valuable comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください