Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

eclipse

jsp

This is what I got on the browser screen when I try to run the JSP 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: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)

And the jasper exception is thrown on the Tomcat window when I ran it.

like image 833
Hariharbalaji Avatar asked Feb 24 '10 15:02

Hariharbalaji


2 Answers

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

That method was introduced in JSP 2.1. There are 3 causes for this problem:

  1. You're using an too old version of the JSP container (you need for example at least Tomcat 6.0).

  2. You've declared the wrong Servlet version in web.xml. JSP 2.1 goes hand in hand with Servlet 2.5, so your web.xml should at least be declared as per the Servlet 2.5 spec (you still need a Servlet 2.5 / JSP 2.1 capable servletcontainer for that).

  3. You've duplicated older versioned appserver-specific libraries into webapp's /WEB-INF/lib, like servlet-api.jar, jsp-api.jar and so on. You should never do that. It will only result in classloading collisions. Get rid of them in your webproject and leave/untouch them there in the appserver.

like image 153
BalusC Avatar answered Oct 31 '22 19:10

BalusC


<dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>servlet-api</artifactId>
   <version>${servlet.version}</version>
   <scope>provided</scope>
</dependency> 

also fixes the issues

like image 42
Ratshiḓaho Wayne Avatar answered Oct 31 '22 18:10

Ratshiḓaho Wayne