这是我尝试运行 JSP 文件时在浏览器屏幕上看到的内容。
The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory
堆栈跟踪:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439) org.apache.jasper.compiler.Compiler.compile(Compiler.java:334) org.apache.jasper.compiler.Compiler.compile(Compiler.java:312) org.apache.jasper.compiler.Compiler.compile(Compiler.java:299) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
当我运行它时,在 Tomcat 窗口上抛出了 jasper 异常。
最佳答案
The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory
那个method是在 JSP 2.1 中引入的。这个问题有3个原因:
您使用的 JSP 容器版本太旧(例如,您至少需要 Tomcat 6.0 )。
您在
web.xml
中声明了错误的 Servlet 版本。 JSP 2.1 与 Servlet 2.5 齐头并进,因此您的web.xml
至少应该按照 Servlet 2.5 规范进行声明(为此您仍然需要一个支持 Servlet 2.5/JSP 2.1 的 servletcontainer)。您已将旧版本的特定于应用程序服务器的库复制到 webapp 的
/WEB-INF/lib
中,例如servlet-api.jar
、jsp -api.jar
等等。你不应该永远那样做。它只会导致类加载冲突。在您的网络项目中删除它们,并在应用服务器中保留/取消触摸它们。
关于eclipse - JspFactory 类型未定义方法 getJspApplicationContext(ServletContext),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36132298/