今天在工作中遇到了一个小问题,我来总结一下!
我们首先是用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">
看来以后再做开发的时候一定要先弄清楚服务器上的开发环境是否和本机的开发环境一致!
我们首先是用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">
看来以后再做开发的时候一定要先弄清楚服务器上的开发环境是否和本机的开发环境一致!