Tomcat7中javax.el.ELException异常信息的处理

本文介绍了一种在更新Tomcat版本后出现的EL表达式解析问题,并提供了具体的配置修改方案来解决该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 最近在部署公司的一个旧有系统的过程中,系统死活无法正常启动,情况是部分人的机器可以,部分人的机器无法正常显示,系统为几年前开发的web系统。

 错误信息如下:

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. Caused by: javax.el.ELException: The identifier [default] is not a valid Java identifier as required by section 1.19 of the EL specification (Identifier ::Java language identifier). This check can be disabled by setting the system property org.apache.el.parser.SKIP_IDENTIFIER_CHECK to true.  
  2.     at org.apache.el.parser.AstDotSuffix.setImage(AstDotSuffix.java:46)  
  3.     at org.apache.el.parser.ELParser.DotSuffix(ELParser.java:1069)  
  4.     at org.apache.el.parser.ELParser.ValueSuffix(ELParser.java:1035)  
  5.     at org.apache.el.parser.ELParser.Value(ELParser.java:980)  
  6.     at org.apache.el.parser.ELParser.Unary(ELParser.java:950)  
  7.     at org.apache.el.parser.ELParser.Multiplication(ELParser.java:714)  
  8.     at org.apache.el.parser.ELParser.Math(ELParser.java:634)  
  9.     at org.apache.el.parser.ELParser.Compare(ELParser.java:446)  
  10.     at org.apache.el.parser.ELParser.Equality(ELParser.java:340)  
  11.     at org.apache.el.parser.ELParser.And(ELParser.java:284)  
  12.     at org.apache.el.parser.ELParser.Or(ELParser.java:228)  
  13.     at org.apache.el.parser.ELParser.Choice(ELParser.java:185)  
  14.     at org.apache.el.parser.ELParser.Expression(ELParser.java:177)  
  15.     at org.apache.el.parser.ELParser.Function(ELParser.java:1263)  
  16.     at org.apache.el.parser.ELParser.NonLiteral(ELParser.java:1189)  
  17.     at org.apache.el.parser.ELParser.ValuePrefix(ELParser.java:1019)  
  18.     at org.apache.el.parser.ELParser.Value(ELParser.java:968)  
  19.     at org.apache.el.parser.ELParser.Unary(ELParser.java:950)  
  20.     at org.apache.el.parser.ELParser.Multiplication(ELParser.java:714)  
  21.     at org.apache.el.parser.ELParser.Math(ELParser.java:634)  
  22.     at org.apache.el.parser.ELParser.Compare(ELParser.java:446)  
  23.     at org.apache.el.parser.ELParser.Equality(ELParser.java:340)  
  24.     at org.apache.el.parser.ELParser.And(ELParser.java:284)  
  25.     at org.apache.el.parser.ELParser.Or(ELParser.java:228)  
  26.     at org.apache.el.parser.ELParser.Choice(ELParser.java:185)  
  27.     at org.apache.el.parser.ELParser.Expression(ELParser.java:177)  
  28.     at org.apache.el.parser.ELParser.DynamicExpression(ELParser.java:149)  
  29.     at org.apache.el.parser.ELParser.CompositeExpression(ELParser.java:46)  
  30.     at org.apache.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:115)  
  31.     ... 98 more  
分析:从上述的错误日志来看,是特定的el方法找不到。其中提到了 the system property org.apache.el.parser.SKIP_IDENTIFIER_CHECK to true。

经过从网上查了一下,方才得知,在新的tomcat中,比如我当前使用的Tomcat7中,tomcat对El中的语法进行了更为严格的检查,所以才产生了上述的错误信息。

解决办法:

     $CATALINA_BASE/conf/catalina.properties 增加

   org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false   
   org.apache.el.parser.SKIP_IDENTIFIER_CHECK=true

可能出现上述情况的系统:

         使用老版本的tomcat没有问题,当切换到新的tomcat版本之时,出现了系统可以正常启动,但是页面的内容无法显示的问题,可以查看一下系统日志,通过日志即可知道是否有上述类似的问题。


转载于:http://blog.youkuaiyun.com/blueheart20/article/details/21449983


HTTP状态 500 - 内部服务器错误 类型 异常报告 消息 org.apache.jasper.JasperException: javax.el.ELException: Failed to parse the expression [${encodeURIComponent(`${platform.toLowerCase()}_login_${timestamp}`)}] 描述 服务器遇到一个意外的情况,阻止它完成请求。 例外情况 org.apache.jasper.JasperException: org.apache.jasper.JasperException: javax.el.ELException: Failed to parse the expression [${encodeURIComponent(`${platform.toLowerCase()}_login_${timestamp}`)}] org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:589) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:425) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327) javax.servlet.http.HttpServlet.service(HttpServlet.java:764) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 根本原因。 org.apache.jasper.JasperException: javax.el.ELException: Failed to parse the expression [${encodeURIComponent(`${platform.toLowerCase()}_login_${timestamp}`)}] org.apache.jasper.compiler.Validator$ValidateVisitor.prepareExpression(Validator.java:1644) org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:771) org.apache.jasper.compiler.Node$ELExpression.accept(Node.java:959) org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2385) org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2437) org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2443) org.apache.jasper.compiler.Node$Root.accept(Node.java:471) org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2385) org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1869) org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:224) org.apache.jasper.compiler.Compiler.compile(Compiler.java:391) org.apache.jasper.compiler.Compiler.compile(Compiler.java:367) org.apache.jasper.compiler.Compiler.compile(Compiler.java:351) org.apache.jasper.JspCompilationContext.compile(JspCompilationConte
03-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值