Intellij IDEA - org.apache.jasper.JasperException:无法为 JSP 编译 class
Intellij IDEA - org.apache.jasper.JasperException: Unable to compile class for JSP
请帮我解决这个问题。我构建了一个 WAR(使用 Maven)但是当我试图在 Tomcat 中部署它时我得到了一个异常:
org.apache.jasper.JasperException
: Unable to compile class for JSP:
The method getJspApplicationContext(ServletContext)
is undefined for the type JspFactory
我在 Whosebug 上找到了问题的原因 - 问题是项目类路径中的 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
添加到类路径中。如果我不添加它们,我就无法编译项目。如果有人能帮助我解决这个问题,我将不胜感激。
使用 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。
请帮我解决这个问题。我构建了一个 WAR(使用 Maven)但是当我试图在 Tomcat 中部署它时我得到了一个异常:
org.apache.jasper.JasperException
: Unable to compile class for JSP:
The methodgetJspApplicationContext(ServletContext)
is undefined for the typeJspFactory
我在 Whosebug 上找到了问题的原因 - 问题是项目类路径中的 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
添加到类路径中。如果我不添加它们,我就无法编译项目。如果有人能帮助我解决这个问题,我将不胜感激。
使用 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。