Tomcat JspFactory的異常的原因及解決辦法
Posted on 2010-12-14 17:32 Gavin.lee 閱讀(1272) 評(píng)論(1) 編輯 收藏 所屬分類(lèi): 經(jīng)驗(yàn)&常識(shí)摘:http://depravedangel.javaeye.com/blog/421663
The method getJspApplicationContext(ServletContext) is undefined for the type
JspFactory的異常的原因及解決辦法原因:
服務(wù)器環(huán)境Jboss,Java程由Tomcat5.5工程目錄直接拷貝,由于WEB-INF/lib下存在jsp-api.jar、servlet-api.jar,與Jboss自帶的jar包沖突造成。
解決辦法:
刪除WEB工程Lib目錄中的jsp-api.jar、servlet-api.jar,重新啟動(dòng)Jboss服務(wù)問(wèn)題解決。
標(biāo)記:
在創(chuàng)建工程時(shí),jsp-api.jar、servlet-api.jar這兩個(gè)jar包都無(wú)需手工加入到web工程中,tomcat與jboss都已包含。
今天運(yùn)行以前的一個(gè)老項(xiàng)目,不成想拋出下面的異常
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:423)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:308)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:273)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
上網(wǎng)搜,發(fā)現(xiàn)不少人有這個(gè)問(wèn)題,但都沒(méi)有解決辦法。后來(lái)想到可能和tomcat6有關(guān),因?yàn)槲以诠こ痰膌ib中添加了很多包(一堆什么Spring
依賴(lài)),所以把他們一刪JSP就不拋異常了。我估計(jì)是,工程中和tomcat6 lib中重復(fù)的包在加載時(shí)是先被加載(也就是tomcat6中相同的包沒(méi)
有被加載),而工程中的包版本要比tomcat6中的低,造成上面的異常。我對(duì)照著tomcat中包,發(fā)現(xiàn)工程中出現(xiàn)諸如catalina.jar、jsp-api.jar
、servlet-api.jar等這樣的重復(fù)包,把它們從工程中刪了就應(yīng)該行了(對(duì)于上面的異常,原因應(yīng)該是包jsp-api.jar)。看來(lái)不是什么包都可以一股腦往工程里加啊。
請(qǐng)關(guān)注@我的新浪微博