请帮我解决这个问题。我构建了一个WAR(uising 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
添加到类路径中。如果我不添加它们,我就无法编译项目。如果有人可以帮我解决这个问题,我会非常感激。
答案 0 :(得分: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。