方法getJspApplicationContext(ServletContext)对于JspFactorytypes是未定义的

当我尝试运行JSP文件时,这就是浏览器屏幕上的内容。

方法getJspApplicationContext(ServletContext)对于JspFactorytypes是未定义的

堆栈跟踪:

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。编译(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)

当我运行它时,jasperexception在Tomcat窗口上抛出。

方法getJspApplicationContext(ServletContext)对于JspFactorytypes是未定义的

该方法在JSP 2.1中引入。 这个问题有三个原因:

  1. 你正在使用一个太旧的JSP容器版本(例如你至less需要Tomcat 6.0 )。

  2. 你已经在web.xml声明了错误的Servlet版本。 JSP 2.1与Servlet 2.5结合在一起,所以你的web.xml至less应该按照Servlet 2.5规范来声明(你仍然需要一个支持Servlet 2.5 / JSP 2.1的servlet容器)。

  3. 您已将旧版本的特定于应用程序的库复制到webapp的/WEB-INF/lib ,如servlet-api.jarjsp-api.jar等。 你永远不应该这样做。 这只会导致类加载冲突。 摆脱他们在你的webproject,离开/解雇他们在应用程序服务器。

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

也解决了这个问题

方法getJspApplicationContext(ServletContext)对于JspFactorytypes是未定义的

当您的项目需要引用服务器运行时时,也会发生这种情况:

  • 在Eclipse的“Project Explorer”中右键单击你的项目
  • select“构buildpath|configuration构buildpath”
  • 点击“库”选项卡
  • 点击“添加库”
  • select“服务器运行时”并点击“下一步”
  • select“Apache Tomcat 7”,或者任何你的服务器运行时版本应该是。

注意:ANT构build也可能发生这个错误,在这种情况下,您需要在您的ANT build.xml文件中引用目标运行时…以下引用本地tomcat安装,并在执行时使用其“lib”文件夹编译:

 <project name="tomcat-demo" default="compile" basedir="."> <property name="tomcat-home" value="/path/to/your/tomcat/apache-tomcat-7" /> <path id="project-classpath"> <fileset dir="WebContent/WEB-INF/lib" includes="*.jar" /> <fileset dir="${tomcat-home}/bin" includes="*.jar" /> <fileset dir="${tomcat-home}/common/lib" includes="*.jar" /> <fileset dir="${tomcat-home}/server/lib" includes="*.jar" /> </path> ... </project> 

从此url中截取:

对于Maven,我还必须将jsp-api依赖项作为提供的jar添加,如下所示:(其他一些依赖项正在引入,我无法弄清楚哪一个依赖项被修复)

 <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> <scope>provided</scope> </dependency>