Unable to compile class for JSP 錯誤的解決過程。

使用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包的衝突。

 

我想若是往後出了這樣的問題。應該嘗試了這些方法就能解決。

相關文章
相關標籤/搜索