java - Intellij IDEA - org.apache.jasper.JasperException : Unable to compile class for JSP

标签 java maven tomcat servlets intellij-idea

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

org.apache.jasper.JasperException: Unable to compile class for JSP:
The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory

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

最佳答案

使用 maven 时,您可以使用 provided scope 从 war 中排除依赖项,像这样:

<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 - Intellij IDEA - org.apache.jasper.JasperException : Unable to compile class for JSP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28253593/

相关文章:

java - Maven 构建错误 - 无法执行目标 org.apache.maven.plugins :maven-assembly-plugin:2. 5.5

eclipse - Eclipse 中的 "Plugin not found for prefix"错误

tomcat - Intellij Ultimate 无法打开打开的 Tomcat Web 应用程序

Java Spring 资源服务器似乎在响应时检查 JWT token

java - 在 Eclipse 中混合 scala、maven 和 java - 单元测试

java - 基于配置文件 Spring Boot 的 Autowiring 实现

java - 如何在运行 Tomcat 时获取包版本?

eclipse - 在 Eclipse 上开发 Web 应用程序时,Tomcat 管理页面的功能是什么?

java - java中的多个服务器TCP

java - 快速而肮脏的设计与良好的设计