创建一个maven的web应用,然后写了一个jsp,然后使用tomcat7:run运行项目, 访问jsp页面的时候报了这样一个错:
Unable to compile class for JSP
The type java.util.Map$Entry cannot be resolved.
搜索之后大概是jdk版本比较高(1.8)而tomcat插件版本比较低的原因。
检查自己的环境:
tomcat插件:tomcat7-maven-plugin 版本2.0
jdk编译器插件:maven-compiler-plugin source和target都设置成1.8
尝试修复:
1. 搜索maven tomcat8插件,没有
2. 搜索maven tomcat8,找到一篇文章,说明如何在eclipse maven工程里面部署项目到maven8:
https://stackoverflow.com/questions/39873651/deploy-maven-project-in-tomcat8-in-eclipse
没有尝试。
3. 继续查看其它jsp编译出错的搜索结果,找到一个线索:
https://stackoverflow.com/questions/19243458/unable-to-compile-class-for-jsp-the-type-java-util-mapentry-cannot-be-resolved
apache-tomcat-7.0.35 does NOT have support for JDK8
apache-tomcat-7.0.50 DOES have support for JDK8.
版本7还是支持jdk8的,于是想到自己添加tomcat7插件的时候,随意的选中了一个低版本的,检查了一下,自己用的是2.0,可选的高版本有2.2的。
4. 将tomcat7插件改成2.2版本的,重启项目,访问jsp,问题解决。
验证了一下,
tomcat7插件2.2版本对应的tomcat版本是7.0.47
tomcat7插件2.0版本对应的tomcat版本是7.0.30
(版本信息在控制台启动信息里面可以看到)