使用Nutz开发应用。java
刚配置好Tomcat。启动项目没问题。而后一访问就报错了。web
2012-8-18 19:17:40 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet jsp threw exception org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 23 in the generated java file The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory Stacktrace: at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92) at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330) at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:334) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:312) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:299) at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) at java.lang.Thread.run(Thread.java:619)
因而呢,百度之。shell
网上说是Tomcat的web.xml和项目里的web.xml中德版本标识不同。apache
就是这句话tomcat
<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_2_5.xsd" version="2.5">
因而我就保证他们俩统一了。启动之。错误继续!app
而后我又百度。在ITeye找到这么一个活生生的案例。eclipse
原文是这样的:jsp
工程启动正常,可是只要一访问页面就会报:
The method getJspApplicationContext(ServletContext) is undefined for the typ ......
打断点,每次走到 CharacterEncodingFilter.java doFilter()就抛异常了。
网上说是工程里面多了几个包,认真找下去,还真的是多了 javax.servlet.jar 和 javax.servlet.jsp.jar 两个包。 去掉就OK了。
而后我看了下。 javax.servlet.jar 和 javax.servlet.jsp.jar 两个包在J2EE Library中。因而我移除了J2EEl Library。spa
容许。报错!依然是:.net
Unable to compile class for JSP: An error occurred at line: 23 in the generated java file The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory
继续找方案。我相信必定会解决的。
百度里全是说删除那两个jar包的方案。无果,我就本身又新建了一个web项目,运行没出错。
因而就应该是我项目里的问题了。
又找到了信心,继续寻找错误根源。
可能结果很搞笑。
我新建了一个项目,把原项目的类,配置,jsp文件所有拷贝进去了。还有jar包。
而后运行成功了。
想了想,应该是我以前创建项目的时候选择的是J2EE4.0 而后再进行项目操做的时候,我不当心使用Myeclipse将项目强制J2EE5.0 ,而后可能就会出现了jar包的冲突。
我想若是往后出了这样的问题。应该尝试了这些方法就能解决。