tomcat - 将 JSTL 1.1 升级到 1.2 失败,出现 java.lang.AbstractMethodError : javax. servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext

标签 tomcat jstl tomcat7

我在使用 JSTL 时遇到错误。请帮助我。

我在我的 tomcat 7 中使用 jSTL-impl-1.2.jar 和 jSTL-api-1.2.jar,我取出了 standard.jsp 和 jSTL.jsp 但仍然遇到这个错误。

错误代码

java.lang.AbstractMethodError: javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext;
javax.servlet.jsp.jstl.core.LoopTagSupport.unExposeVariables(LoopTagSupport.java:624)

Web.xml

<web-app 
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">

最佳答案

您的 /WEB-INF/lib,或者更糟的是,您的 JRE/libJRE/lib/ext 被 servletcontainer 污染了-特定的库,例如不同的旧版本 servletcontainer 品牌/版本的 jsp-api.jar。您需要在您的网络应用程序的 /WEB-INF/lib 中删除它们。这些库应该已经由 servletcontainer 本身提供,在您的情况下是 Tomcat。

在您的特定示例中,javax.servlet.jsp.PageContext.getELContext() Tomcat 的内部类请求自 JSP 2.1 以来仅存在的方法,但在 JSP API 中找不到它,因为您的 webapp 中有一个较旧版本的版本(显然是 JSP 2.0 或更早版本),它在类加载中具有优先权在 Tomcat 自己的之上。

换句话说,您的 Tomcat 7 一直像 tomcat 5.5 或更早版本一样运行,直到您将 JSTL 升级到与 Tomcat 6 兼容的版本。

另见:

关于tomcat - 将 JSTL 1.1 升级到 1.2 失败,出现 java.lang.AbstractMethodError : javax. servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15063197/

相关文章:

java - struts2 jSTL 迭代器标签

java - JSTL <c :forTokens> in JSF or PrimeFaces? 等价于什么

tomcat - 如何在 Linux 12.04 中启动和关闭 tomcat 7 服务器?

eclipse - 警告 : No mapping found for HTTP request with URI [/PMC/] in DispatcherServlet with name 'spring-dispatcher'

java - JSTL函数: ${fn:replace()} Not only replaces with new pattern also adds the original value

java - 获取 tomcat 中部署的 webapps 列表?

java - Tomcat 不会再创建访问日志 - AccessLogValve

java - 是否可以从 javaagent 动态注册 servlet?

java - 使用 Java + Maven + Jersey2 + Tomcat 8.5 和 IntelliJ IDEA 的 HTTP 404

tomcat - 来自外部网络浏览器的 404 错误