对于JspFactory类型,方法getJspApplicationContext(ServletContext)是未定义的

时间:2011-08-15 11:12:05

标签: jsp tomcat

我正在开发一个使用Apache Tomcat 7的JSP项目。

在加载 index.html 时运行项目时没关系,但是当尝试导航到另一个页面时,它显示错误:

  

方法getJspApplicationContext(ServletContext)未定义类型JspFactory

请为我提供摆脱这个问题的解决方案。

4 个答案:

答案 0 :(得分:73)

删除jsp-api.jar文件夹中任何特定于servletcontainer的库,例如/WEB-INF/lib。此异常表示您已经放置了一个容器的servletcontainer特定库,该容器仅支持Servlet 2.4 / JSP 2.0或更早版本(Servlet 2.5 / JSP 2.1中引入了getJspApplicationContext()方法)。这是一个重大错误。这些库不属于webapp的类路径。

也许你这样做是为了克服项目编译错误,这确实是一个非常常见的初学者的错误。这应该以不同的方式解决,您应该在项目中引用目标运行时,而不是将任意servletcontainer make / version的一些库复制到项目中。这会使您的项目与不同品牌和/或版本的servletcontainer不兼容。

另见:

答案 1 :(得分:6)

如果您有maven项目,请尝试添加以下依赖项

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

答案 2 :(得分:0)

您需要在项目中引用服务器运行时。

在Eclipse中:

  • 选择“项目|属性| Java构建路径|库选项卡”
  • 单击“添加库|服务器运行时| Apache Tomcat 7”
  • 单击“确定”。
  • 清理项目,然后重新构建(“Project | Clean”,然后“Project | Build All”)

应该这样做!

注意:有关此问题的详细信息,请参阅this Stack Overflow post

答案 3 :(得分:0)

我在使用 eclipse 处理开源项目时遇到了类似的错误,问题出在我的 tomcat 版本上。我使用的是 tomcat 版本 6。我必须使用 tomcat 版本 8 设置服务器才能解决问题。

这个链接很有帮助Unable to compile class for JSP