一直认为与.NET相比,JAVA最大的问题在于不统一,当然这可能是自由的代价,正如某某某一样,造成的结果是需要记各种各样的版本,有jsp的、servlet的、各种框架的、各种容器的,不一而足。今天要说的是JSTL。关于JSTL的版本问题本来一直认为这不是问题,但是今天在部署的时候恰恰成了问题。中午刚刚做完一个小程序,往服务器上一发布,直接来了一堆错误,如下:
HTTP Status 500 - javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/taglibs/standard/tag/rt/core/SetTag
看到这个错误,我只能得出是标签库引起的,赶紧查查有没有哈,紧接着就上部署网站的“WEB-INF\lib”去找,看有没有JSTL包:
taglibs-standard-impl-1.2.5.jar(实现) taglibs-standard-spec-1.2.5.jar (规范) 以前版本是: jstl.jar standard.jar
一看还真有,那是?想不出来,最后没办法,但是基本上可以断定是版本问题,没办法,从零开始:
1)将TOMCAT下的web.xml文件拷贝出来,获取头文件定义:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
以前的是:
<!-- <web-app 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" --> <!-- version="2.4"> -->
继续加入web.xml中加入JSTL配置:
<jsp-config> <taglib> <taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri> <taglib-location>/WEB-INF/c.tld</taglib-location> </taglib> </jsp-config>
重启TOMCAT,OK,搞定。
网上还有其他网友也遇到了类似的问题,感兴趣的可以一起看看:
http://oldbig.iteye.com/blog/2240432
http://blog.sina.com.cn/s/blog_6f3ef5c20101ar86.html
时间: 2024-10-24 19:37:18