【问题标题】:The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory类型 JspFactory 的方法 getJspApplicationContext(ServletContext) 未定义
【发布时间】:2011-10-27 05:09:40
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: jsp tomcat


    【解决方案1】:

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

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

    另见:

    【讨论】:

    • 哇,你救了我,谢谢 :)
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      在 Eclipse 中:

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

      应该这样做!

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 2017-05-27
          • 1970-01-01
          • 1970-01-01
          • 2022-12-23
          • 2016-06-07
          • 2021-06-19
          • 2014-07-14
          相关资源
          最近更新 更多