1. 程式人生 > >Maven項目不能編譯jsp解決方法:Unable to compile class for JSP

Maven項目不能編譯jsp解決方法:Unable to compile class for JSP

包沖突 apach bsp end for 自己 下載 style led

一、問題描述:

先交代開發環境,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錯誤。

二、分析問題:

(1)不能編譯應該是沒有導入servlet-api、jsp-api包的原因,然後就在pom文件中加上servlet-api、jsp-api包,為了防止包沖突,需要把<scope>改成provided。

 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>

加上之後還是不行,然後就開始找度娘,開始第二個解決方案。

(2)eclipse默認用的是自帶的jre,需要我們自己改成下載好的JDK,在Window->Preference->Java->Installed JREs中添加自己下載的JDK並刪除eclipse自帶的jre。如圖:

技術分享圖片

運行之後還是不行,之後百度的大部分都是類似的解決方案,全部都不行,只好自己慢慢探索,從項目搭建到運行仔細檢查一遍,終於發現問題。

技術分享圖片

原來maven默認使用的是Tomcat6,而我使用的是JDK1.8,Tomcat6不能與JDK1.8一起使用。只要將Tomcat的版本調高就行了。

(3)使用maven的Tomcat7插件:在pom文件中加上一下代碼即可:

 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就行了。

Maven項目不能編譯jsp解決方法:Unable to compile class for JSP