The method getJspApplicationContext(ServletContext) is undefined for the type Js

悠悠隱於市發表於2011-04-03

The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory的解決方法

最近又開始看jsp,不過我看的那本書的版本已經舊了,那時候用的tomcat還是5的版本,我現在自己下的用的是tomcat6,在執行隨書光碟的例子的時候,報了這樣的錯誤:
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

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:
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:589)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.24 logs.
Apache Tomcat/6.0.24

後來在網上查了查,說是因為專案中有像jsp-api.jar servlet-api.jar跟tomcat6的lib中同樣的包,但版本比tomcat6的版本要低,在執行的時候,因為會優先載入專案中的包,所以產生了錯誤,把專案中和tomcat相同的包刪除(必須刪除,如果替換還會產生其他的錯誤),問題就可以解決了。

實際通過這個問題,則可以明白,在佈署jsp網站(在tomcat上)的時候,專案中的jar包不能有和tomcat的lib中相同的包(自己包的版本比 tomcat低或相同),否則會因為先載入自己專案中的包而導致程式錯誤。所以在有相包的情況的時候,將自己的包給刪掉,就不會出現問題了。

相關文章