现在的位置: 首页 > 综合 > 正文

java.lang.NoSuchFieldError: deferredExpression

2018年05月19日 ⁄ 综合 ⁄ 共 2293字 ⁄ 字号 评论关闭

在使用JSTL标签时发生了如下异常:当修改了某个jsp页面时,刷新浏览器时会报如下错误,导致项目异常。错误现场如下:

-----------------------------------------------------------------------------------------------------------------------------------------------------------

异常: java.lang.NoSuchFieldError: deferredExpression 

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: java.lang.NoSuchFieldError: deferredExpression 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:274) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
oilsb.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:20)

root cause

java.lang.NoSuchFieldError: deferredExpression 
org.apache.taglibs.standard.tag.common.core.ForEachSupport.release(ForEachSupport.java:178) 
org.apache.jasper.runtime.TagHandlerPool.release(TagHandlerPool.java:166)
org.apache.jsp.sitetotal_005fdisplay_jsp._jspDestroy(sitetotal_005fdisplay_jsp.java:44) 
org.apache.jasper.runtime.HttpJspBase.destroy(HttpJspBase.java:61) 
org.apache.jasper.servlet.JspServletWrapper.destroy(JspServletWrapper.java:425) 
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:139) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 

oilsb.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:20)

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

错误原因:

jstl版本冲突,也就是说项目中引入了两种版本的jstl库文件。遇到这个异常的时候是用jstl标签,是版本问题,由于MyEclipse添加Java EE5,其中自动包括了jstl1.2的版本,lib中又存在一个jstl1.1.2的jar包,把旧版本的删掉就可以了--注意同时删除掉tomcat项目里面的旧版本

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

解决方案:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>使用的是jstl.jar
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>使用的是jstl-1.1.2.jar或jstl-1.2.jar
工程中使用的标签必须统一,只用一个jar包。发布后检查Tomcat中jar包是否只有一个。

抱歉!评论已关闭.