Tomcat6.0兼容Tomcat5.5.20版本

今天在工作中遇到了一个小问题,我来总结一下!
我们首先是用Tomcat6.0做的开发,做的是一个小项目,直到产品做完了,遇到了一个很棘手的问题,就是我们开发的时候用的是Tomcat6.0版本,开发完成以后,准备上传服务器上的时候才发现服务器上面的Tomcat是5.5.20版本,然后部署上去就报错,报的是Servlet.service() for servlet jsp threw exception
java.lang.NoClassDefFoundError: javax/el/ELException
真是相当的郁闷啊!

最后查询资料得知是JSTL的版本不兼容,6.0的版本使用的是jstl1.2版本,这个版本在5.5下面不支持1.2的版本,还有EL表达式的冲突,还有一个原因是Tomcat6 实现了servlet 2.5 和JSP2.1的规范,可以支持JSTL1.2;
而Tomcat5实现了 servlet 2.4 和JSP2.0的规范,只能支持JSTL1.1

所以,只要使用JSTL1.1(standard-1.1.jar和jstl-1.1.jar)替换JSTL1.2(jstl-1.2.jar)即可在Tomcat5下正常运行!
在maven中配置以下依赖:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>

在resin-3.0.28中运行,报以下错误:

Servlet.service() for servlet jsp threw exception
java.lang.NoClassDefFoundError: javax/el/ELException

原因是容器不支持JSTL1.2,换成以下依赖就好了:

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.1.2</version>
</dependency>

另外,web.xml必须指定使用servlet 2.4 和JSP2.0的规范:
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

看来以后再做开发的时候一定要先弄清楚服务器上的开发环境是否和本机的开发环境一致!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值