javax.servlet.jsp.JspException cannot be resolved to a type 和 javax.servlet.jsp.PageContext cannot be resolved to a type 解决办法

今天我从码云上拉一个项目下来,是个maven项目,闲来无事自己研究研究,发现刚拉下来,项目就有报错,我一看是httpServletRequest cannot be resolved to a type, 应该是少了servlet的jar包,直接在pom.xml中添加了这个servlet的依赖,这个依赖的域范围要改成provided 即:

1 <dependency>
2     <groupId>javax.servlet</groupId>
3     <artifactId>javax.servlet-api</artifactId>
4     <version>${servlet.version}</version>
5     <scope>provided</scope>
6 </dependency>

发现错误变成了标题上的两个错误,这两个错误都是没有jsp的jar包导致的,我果断再加了一个依赖:

1 <dependency>
2     <groupId>javax.servlet</groupId>
3     <artifactId>jsp-api</artifactId>
4     <version>2.0</version>
5     <scope>provided</scope>
6 </dependency>

这样就不报错了,项目正常启动,第一次我这个jsp-api的域范围没有设置为provided,启动项目就报错

报的是:

1 Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[/mybatisplus-spring-mvc]]

然后我改了jsp-api的作用域就ok了,这里解释下为什么要将这两个依赖的作用域设置为provided,这是因为我使用的是maven内置的tomcat插件启动的项目,而tomcat本身就

自带了这两个jar包,如果你设置为默认的,会将这两个jar包打包进去,就会造成重复,和Tomcat里自带的相冲突。

大家看一下就明白了

当然如果你使用的是maven内置的插件jetty的话,就不用设置这个域的范围!

解决方法二:

  选择你的项目,右击build path -》Config Build Path..  ->libraries->Add External JARS.. 

  然后选择你本机器上的Tomcat,选择它里面的jsp-api.jar

  然后一路确定就可以了。

如有不对的地方,欢迎指正!

越努力越幸运
原文地址:https://www.cnblogs.com/zfding/p/7726029.html