Tomcat 7 javax.el.E​​LException

时间:2013-06-26 07:47:32

标签: java tomcat centos

我今天重新启动了httpd和tomcat服务,之后就这样做了。我收到了以下信息。

我看到了这个帖子http://www.coderanch.com/t/592922/Tomcat/enable-el-api-jar-ver

并按照他们的说法做了。我查了一下,el-api.jar就在那里。我检查了另一台服务器,tomcat也运行得很好。

服务器是Centos 6.4(最终版)和Tomcat 7.0.23版。

我尝试了一切,甚至更换了jar文件,但似乎没有任何效果。

type Exception report

message

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

exception

org.apache.jasper.JasperException: javax.el.ELException: Provider com.sun.el.ExpressionFactoryImpl not found
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:585)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:396)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause

javax.el.ELException: Provider com.sun.el.ExpressionFactoryImpl not found
    javax.el.FactoryFinder.newInstance(FactoryFinder.java:101)
    javax.el.FactoryFinder.find(FactoryFinder.java:197)
    javax.el.ExpressionFactory.newInstance(ExpressionFactory.java:189)
    javax.el.ExpressionFactory.newInstance(ExpressionFactory.java:160)
    org.apache.jasper.runtime.JspApplicationContextImpl.getExpressionFactory(JspApplicationContextImpl.java:108)
    org.apache.jsp.index_jsp._jspInit(index_jsp.java:31)
    org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:49)
    org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:180)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause

java.lang.ClassNotFoundException: com.sun.el.ExpressionFactoryImpl
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1688)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1533)
    javax.el.FactoryFinder.newInstance(FactoryFinder.java:87)
    javax.el.FactoryFinder.find(FactoryFinder.java:197)
    javax.el.ExpressionFactory.newInstance(ExpressionFactory.java:189)
    javax.el.ExpressionFactory.newInstance(ExpressionFactory.java:160)
    org.apache.jasper.runtime.JspApplicationContextImpl.getExpressionFactory(JspApplicationContextImpl.java:108)
    org.apache.jsp.index_jsp._jspInit(index_jsp.java:31)
    org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:49)
    org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:180)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.23 logs.

2 个答案:

答案 0 :(得分:7)

请确保您在${TOMCAT_HOME}/lib

处同时拥有这两个罐子
el-api-2.2.jar // jar version could differ
el-impl-2.2.jar

答案 1 :(得分:0)

我今天在 Tomcat 9.0.21 上遇到了同样的错误

并根据此错误 - https://bz.apache.org/bugzilla/show_bug.cgi?id=64097

这是“el-api.jar”的一个已知错误,已在以下版本中修复

已修复:

  • 掌握 10.0.0.0-M1 及更高版本
  • 9.0.31 以后的 9.0.x
  • 8.5.51 或更高版本为 8.5.x
  • 7.0.100 以后的 7.0.x

解决方案:- 您可以将 tomcat 升级到这些版本,或者只是从较新的 tomcat(已修复)的 lib 文件夹中引入“el-api.jar”,将其放入您的 lib 文件夹中并重新启动 tomcat。 它会起作用。