開発環境をいじったりして定期的にハマるので、、EclipseからTomcat起動したときに発生するエラーについてメモです。どちらも、特にWEB-INF/libフォルダに意図せずに残っている場合が多いです。mavenプラグインで開発用クラスローダーを使った環境なのですが、それがよくないのかなあ。。
〜〜Filter cannot be cast to javax.servlet.Filter
"〜〜Fileter"という部分には、web.xmlで定義しているサーブレットフィルタのクラス名が入ります。geronimo-j2eeやservlet-apiのjarファイルが読込まれていることが原因。
java.lang.NoSuchFieldError: fRecognizedFeatures
こんなの。
致命的: 設定記述子 test.xml を配備中のエラーです java.lang.NoSuchFieldError: fRecognizedFeatures at org.apache.xerces.parsers.XML11Configuration.<init>(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.<init>(Unknown Source) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at java.lang.Class.newInstance0(Class.java:355) at java.lang.Class.newInstance(Class.java:308)
xercesImplのjarファイルが読込まれていることが原因。
javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext
こんなの
javax.servlet.ServletException: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext; at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:274) at javax.servlet.http.HttpServlet.service(HttpServlet.java:688) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.seasar.struts.filter.S2StrutsFilter.doFilter(S2StrutsFilter.java:50) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
JSPのworkフォルダを削除する。