【问题标题】:Intellij IDEA - org.apache.jasper.JasperException: Unable to compile class for JSPIntellij IDEA - org.apache.jasper.JasperException:无法为 JSP 编译类
【发布时间】:2015-03-30 23:22:12
【问题描述】:

请帮我解决问题。我构建了一个 WAR(使用 Maven),但是当我尝试在 Tomcat 中部署它时出现异常:

org.apache.jasper.JasperException:无法为 JSP 编译类:
方法getJspApplicationContext(ServletContext)未定义JspFactory类型

我在 stackoverflow 上找到了问题的原因 - 问题在于项目类路径中的 Servlet API 和当前版本的 servlet 容器使用的相关库不一致。提供的解决方案是避免将任何 Servlet API 相关库(servlet-api.jar、jstl.jar、jsp-api.jar 等)添加到 lib - 文件夹。我还找到了 Eclipse ([How do I import the javax.servlet API in my Eclipse project?) 的解决方案。但我在 IntellijIDEA 中开发,它与 Eclipse 不同。在我的情况下,不可能不将servlet-api.jar 和jstl-${version}.jar 添加到类路径中。如果我不添加它们,我将无法编译项目。如果有人能在这个问题上帮助我,我将不胜感激。

【问题讨论】:

    标签: java maven tomcat servlets intellij-idea


    【解决方案1】:

    使用 maven 时,您可以使用 provided scope 从战争中排除依赖项,如下所示:

    <dependencies>
        <dependency>
            <groupId>some.group.id</groupId>
            <artifactId>some-artifact-id</artifactId>
            <version>x.y.z</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    

    你需要对tomcat提供的所有依赖都这样做。


    Intellij Idea 也提供了类似的作用域机制,参见文档here。

    【讨论】:

    • 谢谢!它成功了。但现在我有另一个问题 - java.io.FileNotFoundException: 无法打开 ServletContext 资源 ))) 我要为这个问题找到解决方案
    猜你喜欢
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多