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

问题描述 投票:0回答:5

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

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

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

请给我一个解决方案来摆脱这个问题。

jsp tomcat
5个回答
79
投票

删除

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

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

另请参阅:


6
投票

如果你有一个 Maven 项目,请尝试添加以下依赖项

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

0
投票

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

在日食中:

  • 选择“项目 | 属性 | Java 构建路径 | 库选项卡”
  • 单击“添加库 | 服务器运行时 | Apache Tomcat 7”
  • 单击“确定”。
  • 清理您的项目,然后再次构建它(“项目 | 清理”,然后“项目 | 构建全部”)

应该可以了!

注意:请参阅此 Stack Overflow 帖子,了解有关此问题的更多详细信息


0
投票

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

此链接很有帮助无法编译 JSP 类


0
投票
I am using Tomcat v8.0. 
This did not help:
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>
I checked all the runtime configurations and they all look fine. 
The jsp page does not load, but downloads a text file.
© www.soinside.com 2019 - 2024. All rights reserved.