在搭建一个web工程项目过程中,发现某个jsp页面报错,前台显示报错是“Stream closed",查看后台日志,报错为如下代码。
搞不清楚状况,以为是代码错误,后来经过定位发现,原因是tomcat 有的版本不支持此el表达式,搭建环境使用的是myeclipse10自带tomcat,版本为6.0.13,不支持就更换tomcat版本。
果然,更换tomcat版本为7之后,问题没有再出现了,记录下问题,供有类似情况的同学查看。
严重: Servlet.service() for servlet jsp threw exception
org.apache.el.parser.ParseException: Encountered "templateInfo.backgroupColor: \'#FFFFFF\'" at line 1, column 37.
Was expecting one of:
"(" ...
<IDENTIFIER> ...
<NAMESPACE> <IDENTIFIER> ...
at org.apache.el.parser.ELParser.generateParseException(ELParser.java:1874)
at org.apache.el.parser.ELParser.jj_consume_token(ELParser.java:1754)
at org.apache.el.parser.ELParser.NonLiteral(ELParser.java:1136)
at org.apache.el.parser.ELParser.ValuePrefix(ELParser.java:1030)
at org.apache.el.parser.ELParser.Value(ELParser.java:978)
at org.apache.el.parser.ELParser.Unary(ELParser.java:960)
at org.apache.el.parser.ELParser.Multiplication(ELParser.java:723)
at org.apache.el.parser.ELParser.Math(ELParser.java:643)
at org.apache.el.parser.ELParser.Compare(ELParser.java:455)
at org.apache.el.parser.ELParser.Equality(ELParser.java:349)
at org.apache.el.parser.ELParser.And(ELParser.java:293)
at org.apache.el.parser.ELParser.Or(ELParser.java:237)
at org.apache.el.parser.ELParser.Choice(ELParser.java:203)
at org.apache.el.parser.ELParser.Expression(ELParser.java:183)
at org.apache.el.parser.ELParser.DynamicExpression(ELParser.java:155)
at org.apache.el.parser.ELParser.CompositeExpression(ELParser.java:52)
at org.apache.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:93)
at org.apache.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:146)
at org.apache.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:190)
at org.apache.el.ExpressionFactoryImpl.createValueExpression(ExpressionFactoryImpl.java:68)
前台报错:
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: java.io.IOException: Stream closed org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515) org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
root cause
java.io.IOException: Stream closed org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:204) org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:115) org.apache.jasper.runtime.JspWriterImpl.flush(JspWriterImpl.java:173) org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:956) org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:609) org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:119) org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:178) com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:348) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253) com.eshore.mmmp.web.interceptor.LoginInterceptor.intercept(LoginInterceptor.java:47) com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123) com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:240) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86) com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:105) com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:207) com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:115) com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:170) com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:50) org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:504) org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.13 logs.