JDK版本问题导致的javax.servlet.ServletException: Cannot find ActionMappings or ActionFormBeans collection

简介: 这是我这几天遇到的一个问题,最后发现是一个低级的错误,不过还是值得记录下来:1、问题现象:我在Eclipse通过MyEclipse创建一个WebProject,使用Struts1.2。在Eclipse运行没有问题,于是就是用Eclipse的Export功能,导出为一个war文件,将该war文件解压后放到了Tomcat的webapps目录,启动tomcat。
这是我这几天遇到的一个问题,最后发现是一个 低级的错误,不过还是值得记录下来:
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)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


运行环境: Tomcat5.5.23, JDK1.5.14 
 
2、问题原因
MyEclipse使用的JDK版本(1.6)和Tomcat使用的版本(1.5)不一致。当我把Struts去掉,直接使用Servlet时,问题就暴露了, 提示Bad version in .class file. 于是更改了Tomcat使用的JDK版本,问题解决。

这里我也把热心的 sp16052380的回答转帖过来:
多种情况会导致这个问题,但大致就是以下几种情况:

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的连接试验,结果配置完成之后发现调不通,运行之后,出现错误:
javax.servlet.ServletException: Cannot find ActionMappings or ActionFormBeans collection
反复修改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中,问题得到解决,并调试通过。
目录
相关文章
|
4月前
|
Java Linux 开发工具
Jenv 多版本JDK管理
Jenv 可以对多版本JDK进行管理
|
5月前
|
Web App开发 Java Linux
Nexus【部署 02】最新版本 nexus-3.35.0-02-unix.tar.gz 安装配置启动及测试(JDK版本+虚拟机参数配置说明)
Nexus【部署 02】最新版本 nexus-3.35.0-02-unix.tar.gz 安装配置启动及测试(JDK版本+虚拟机参数配置说明)
141 0
|
5月前
|
存储 Java 编译器
JVM-不同jdk版本静态变量存储位置
JVM-不同jdk版本静态变量存储位置
|
4月前
|
Oracle JavaScript Java
JDK的版本迭代特性(JDK9 - JDK20)
JDK的版本迭代特性(JDK9 - JDK20)
|
3月前
|
Oracle Java 编译器
基本概念【入门、 发展简史、核心优势、各版本的含义、特性和优势、JVM、JRE 和 JDK 】(二)-全面详解(学习总结---从入门到深化)
基本概念【入门、 发展简史、核心优势、各版本的含义、特性和优势、JVM、JRE 和 JDK 】(二)-全面详解(学习总结---从入门到深化)
48 1
|
5月前
|
Java Maven
[Java ] jdk升级 bug java: -source 8 中不支持 instanceof 中的模式匹配 (请使用 -source 16 或更高版本以启用 instanceof 中的模式匹配)
[Java ] jdk升级 bug java: -source 8 中不支持 instanceof 中的模式匹配 (请使用 -source 16 或更高版本以启用 instanceof 中的模式匹配)
145 0
|
27天前
|
Oracle Java 关系型数据库
Java 开发者必备:JDK 版本详解与选择策略(含安装与验证)
Oracle Java SE 支持路线图显示,JDK 8(LTS)支持至2030年,非LTS版本如9-11每6个月发布且支持有限。JDK 11(LTS)支持至2032年,而JDK 17及以上版本现在提供免费商用许可。LTS版本提供长达8年的支持,每2年发布一次。Oracle JDK与OpenJDK有多个社区和公司构建版本,如Adoptium、Amazon Corretto和Azul Zulu,它们在许可证、商业支持和更新方面有所不同。个人选择JDK时,可考虑稳定性、LTS、第三方兼容性和提供商支持。
105 0
|
2月前
|
Java 应用服务中间件 nginx
idea打war包时,JDK版本的问题解决方式
idea打war包时,JDK版本的问题解决方式
17 0
|
2月前
|
Java
916.【Java】javap 查看 class 文件的jdk编译版本
916.【Java】javap 查看 class 文件的jdk编译版本
54 2
|
2月前
|
Oracle 安全 Java
JDK收费的各个版本(记录一下)
JDK收费的各个版本(记录一下)
422 0