java.lang.AbstractMethodError:javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext;
此异常基本上意味着,在类或其依赖项之一的编译时类路径中可以使用运行时类路径中找不到的方法。
JSP
2.1中引入了该方法,该方法与Servlet
2.5紧密结合。由于Jetty 7应该支持Servlet 2.5,因此在这里不是可疑的,唯一的原因可能
web.xml是声明为Servlet
2.4或更低版本而不是Servlet 2.5。因此,要解决此特定问题,您需要
web.xml至少声明Servlet 2.5。该
<web-app>标签应该是这样的:
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="YourWebAppID" version="2.5">
如果不解决这个问题,那么其他的原因是
/WEB-INF/lib甚至更糟糕的
/JRE/lib还是
/JRE/lib/ext堆满了含有较旧的Servlet
API版本特定应用程序服务器的库。例如,
servlet-api.jar从Tomcat或
j2ee.jar
或
javaee.jar从Glassfish的,等等。您需要从任何不属于该库的库中清理这些类路径文件夹,因为它们在类加载中具有优先权,并且将覆盖应用服务器自己的库。特定于Appserver的库属于所讨论的appserver,而不属于webapp或JRE。
话虽如此,除了实际的问题之外,所有
@page属性
language="java" contentType="text/html;charset=utf-8"都是多余的。在
language已经默认为爪哇和
contentType已经默认
text/html和
charset就已经被设置到
UTF-8如果设置
pageEncoding="UTF-8"。因此,以下内容已足够:
<%@page pageEncoding="UTF-8" %>



