O método getJspApplicationContext (ServletContext) é indefinido para o tipo JspFactory

Isto é o que eu tenho na canvas do navegador quando tento executar o arquivo JSP.

O método getJspApplicationContext (ServletContext) é indefinido para o tipo 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)

E a exceção jasper é lançada na janela do Tomcat quando eu corri.

O método getJspApplicationContext (ServletContext) é indefinido para o tipo JspFactory

Esse método foi introduzido no JSP 2.1. Existem 3 causas para este problema:

  1. Você está usando uma versão muito antiga do contêiner JSP (você precisa, por exemplo, pelo menos do Tomcat 6.0 ).

  2. Você declarou a versão errada do Servlet em web.xml . O JSP 2.1 anda de mãos dadas com o Servlet 2.5, portanto, seu web.xml deve pelo menos ser declarado de acordo com a especificação do Servlet 2.5 (você ainda precisa de um servletcontainer Servlet 2.5 / JSP 2.1 para isso).

  3. Você duplicou bibliotecas específicas de appserver com versão antiga em webapp /WEB-INF/lib , como servlet-api.jar , jsp-api.jar e assim por diante. Você nunca deveria fazer isso. Isso só resultará em colisões de carregamento de class. Livre-se deles em seu webproject e deixe / desconecte-os lá no appserver.

  javax.servlet servlet-api ${servlet.version} provided  

também corrige os problemas

O método getJspApplicationContext (ServletContext) é indefinido para o tipo JspFactory

Isso também pode acontecer quando seu projeto requer uma referência a um tempo de execução do servidor:

  • Clique com o botão direito em seu projeto no “Project Explorer” do Eclipse
  • Escolha “Construir caminho | Configurar caminho de construção”
  • Clique na aba “Bibliotecas”
  • Clique em “Adicionar biblioteca”
  • Selecione “Server Runtime” e clique em “Next”
  • Escolha “Apache Tomcat 7” ou qualquer que seja a versão de tempo de execução do seu servidor.

Nota: Esse erro também pode acontecer para construções ANT e, nesse caso, é necessário referenciar um tempo de execução de destino em seu arquivo build.xml do ANT … O seguinte faz referência a uma instalação do tomcat local e usa suas pastas “lib” ao fazer a compilation:

         ...  

Snagged deste URL :

Para Maven, eu também tive que adicionar a dependência jsp-api como um jar fornecido como este: (Alguma outra dependência foi puxá-lo, eu nunca consegui descobrir qual deles, mas isso consertou)

  javax.servlet servlet-api 2.5 provided   javax.servlet jsp-api 2.0 provided