天天看點

JDK版本問題導緻的javax.servlet.ServletException: Cannot find ActionMappings or ActionFormBeans collection

這是我這幾天遇到的一個問題,最後發現是一個低級的錯誤,不過還是值得記錄下來:

1、問題現象:

我在Eclipse通過MyEclipse建立一個WebProject,使用Struts1.2。在Eclipse運作沒有問題,于是就是用Eclipse的Export功能,導出為一個war檔案,将該war檔案解壓後放到了Tomcat的webapps目錄,啟動tomcat。通路時在浏覽器中就遇到了問題:

javax.servlet.ServletException: Cannot find ActionMappings or ActionFormBeans collection

org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)

org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)

org.apache.jsp.index_jsp._jspService(index_jsp.java:102)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)

javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)

運作環境: Tomcat5.5.23, JDK1.5.14 

2、問題原因

MyEclipse使用的JDK版本(1.6)和Tomcat使用的版本(1.5)不一緻。當我把Struts去掉,直接使用Servlet時,問題就暴露了, 提示Bad version in .class file. 于是更改了Tomcat使用的JDK版本,問題解決。

多種情況會導緻這個問題,但大緻就是以下幾種情況:

1。Web.xml未初始化問題

少了一個 <load-on-startup>0 </load-on-startup>

這樣開始是沒有加載這個類,就沒有初始化struts-config.xml,是以找不到

actionmappings or actionformbeans collection。

2。struts-config.xml問題

3。jar包不全或版本不對

也有可能導緻這個問題,從stuts例子裡面拷過來就好了。struts1.1自帶共10個jar包。

4。編譯問題

有可能Action和Formbean沒有編譯,也會有這個問題,檢查一下有沒有對應的class檔案就好。class路徑不對可能也會導緻這個問題。

5。版本問題

用的servlet容器和struts版本不對或這兩個版本協調有問題。

在以上幾條都不能解決問題的情況下,可能就是版本的問題了,換個高版本試試吧

Cannot find ActionMappings or ActionFormBeans collection的錯誤調試

今天在做struts的連接配接試驗,結果配置完成之後發現調不通,運作之後,出現錯誤:

反複修改web.xml 和 struts-config.xml 無果。

确定配置沒錯之後,從其他方面找原因。

最後發現,類庫中jar包不全,于是将

commons-beanutils.jar

commons-collections.jar

commons-dbcp.jar

commons-digester.jar

commons-fileupload.jar

commons-lang.jar

commons-pool.jar

commons-resources.jar

commons-validator.jar

拷入lib中,問題得到解決,并調試通過。

繼續閱讀