1、问题描述:java
先交代开发环境,JDK是1.8的,IDE是eclipse 4.7,web服务器是Tomcat 9.0,maven是3.5.0,搭建好环境后输入命令tomcat:run,而后就报org.apache.jasper.JasperException: Unable to compile class for JSP错误。web
2、分析问题:apache
(1)不能编译应该是没有导入servlet-api、jsp-api包的缘由,而后就在pom文件中加上servlet-api、jsp-api包,为了防止包冲突,须要把<scope>改为provided。api
1 <dependency> 2 <groupId>javax.servlet</groupId> 3 <artifactId>servlet-api</artifactId> 4 <version>2.5</version> 5 <scope>provided</scope> 6 </dependency> 7 <dependency> 8 <groupId>javax.servlet</groupId> 9 <artifactId>jsp-api</artifactId> 10 <version>2.0</version> 11 <scope>provided</scope> 12 </dependency>
加上以后仍是不行,而后就开始找度娘,开始第二个解决方案。tomcat
(2)eclipse默认用的是自带的jre,须要咱们本身改为下载好的JDK,在Window->Preference->Java->Installed JREs中添加本身下载的JDK并删除eclipse自带的jre。如图:服务器
运行以后仍是不行,以后百度的大部分都是相似的解决方案,所有都不行,只好本身慢慢探索,从项目搭建到运行仔细检查一遍,终于发现问题。eclipse
原来maven默认使用的是Tomcat6,而我使用的是JDK1.8,Tomcat6不能与JDK1.8一块儿使用。只要将Tomcat的版本调高就好了。jsp
(3)使用maven的Tomcat7插件:在pom文件中加上一下代码便可:maven
1 <build> 2 <plugins> 3 <plugin> 4 <groupId>org.apache.maven.plugins</groupId> 5 <artifactId>maven-compiler-plugin</artifactId> 6 <version>3.1</version> 7 <configuration> 8 <source>1.8</source> 9 <target>1.8</target> 10 <encoding>utf-8</encoding> 11 </configuration> 12 </plugin> 13 <plugin> 14 <groupId>org.apache.tomcat.maven</groupId> 15 <artifactId>tomcat7-maven-plugin</artifactId> 16 <version>2.2</version> 17 </plugin> 18 </plugins> 19 </build>
而后将maven命令改成Tomcat7:run就好了。ide