我在使用 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/lib
或 JRE/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/