在 Eclipse 中工作的 Web 应用程序给出了验证 EL 错误 org.apache.catalina.core.StandardWrapperValve 调用

Posted

技术标签:

【中文标题】在 Eclipse 中工作的 Web 应用程序给出了验证 EL 错误 org.apache.catalina.core.StandardWrapperValve 调用【英文标题】:Web App working in eclipse gives Verify EL error org.apache.catalina.core.StandardWrapperValve invoke 【发布时间】:2011-11-10 18:39:05 【问题描述】:

在 Tomcat 7 环境中的 Eclipse 中运行良好的标准 webapp 出现此错误。任何想法

应用程序在 Eclipse 中运行良好....但在 Tomcat 7 中出现大量此类错误,并且应用程序无响应

Sep 5, 2011 12:53:57 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [jsp] in context with path [] threw exception [java.lang.VerifyError: (class: org/apache/jasper/runtime/JspApplicationContextImpl, method: createELResolver signature: ()Ljavax/el/ELResolver;) Incompatible argument to function] with root cause
java.lang.VerifyError: (class: org/apache/jasper/runtime/JspApplicationContextImpl, method: createELResolver signature: ()Ljavax/el/ELResolver;) Incompatible argument to function
    at org.apache.jasper.runtime.JspFactoryImpl.getJspApplicationContext(JspFactoryImpl.java:209)
    at org.apache.jsp.index_jsp._jspInit(index_jsp.java:23)
    at org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:49)
    at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:171)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:356)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:182)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:680)

【问题讨论】:

【参考方案1】:

java.lang.VerifyError: (class: org/apache/jasper/runtime/JspApplicationContextImpl, method: createELResolver signature: ()Ljavax/el/ELResolver;) 函数参数不兼容

当您针对在生产中运行的容器不支持的 JSP/Servlet 版本编译/构建 webapp/WAR 时,可能会发生这种情况。例如,您使用 Tomcat 7 进行开发,但最终将其部署到 Tomcat 6。确保目标运行时 servletcontainer 与您在 Eclipse 中开发的 servletcontainer 具有相同的 JSP/Servlet 版本。

如果 Dynamic Web Module 版本与目标运行时支持的最大 Servlet API 版本匹配,则右键单击项目并检查 Project Facets 的属性。例如。 Tomcat 6.0 仅支持 Servlet 2.5。此外,您应该更喜欢针对与生产中运行的完全相同的 servletcontainer make/version 进行开发。然后可以在项目属性的 Targeted Runtimes 部分进行设置。

您还应该确保您的 web 应用的 /WEB-INF/lib 中没有任何特定于容器的库。另见How do I import the javax.servlet API in my Eclipse project?

【讨论】:

以上是关于在 Eclipse 中工作的 Web 应用程序给出了验证 EL 错误 org.apache.catalina.core.StandardWrapperValve 调用的主要内容,如果未能解决你的问题,请参考以下文章

sdcc 在 keil 中工作的代码上给出语法错误

马文2pom.xml文件对于在Eclipse Europa+m2eclipse中工作的webapp

在junit中工作的Spring启动监听器

无法获得在 Propel2 中工作的外键

如何在 iPhone 模拟器中工作的 UIAutomation 中获取 captureScreenWithName?

为在同一文件中工作的多个用户寻求设计建议