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

2024-04-08

当我使用 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">

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

在您的特定示例中,javax.servlet.jsp.PageContext.getELContext() http://docs.oracle.com/javaee/6/api/javax/servlet/jsp/JspContext.html#getELContext%28%29方法仅从 JSP 2.1 开始存在,由 Tomcat 的内部类请求,但在 JSP API 中找不到该方法,因为您的 web 应用程序中有一个较旧版本的方法(显然是 JSP 2.0 或更早版本),该方法在类加载中具有优先权超过 Tomcat 自己的。

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

也可以看看:

  • 如何在 Eclipse 项目中导入 javax.servlet API? https://stackoverflow.com/questions/4076601/how-do-i-import-the-javax-servlet-api-in-my-eclipse-project/4076706#4076706
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 JSTL 1.1 升级到 1.2 失败,并出现 java.lang.AbstractMethodError:javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext 的相关文章

随机推荐