1. 問題描述
初學Maven,新建了一個基於Web骨架的Web項目,jar 包也導好了,作用域也設置正確了,Tomcat也正常運行了,可是就是說編譯錯誤。
2. 問題原因
雖然我配置了Tomcat 9,但是我忘記了Maven用的是自帶的Tomcat。Maven默認的Tomcat是6.0.29版本,而且問題出在我以前的JDK環境是1.7,因為Tomcat 6 支持JDK1.7,所以沒有錯誤。而我現在更換了JDK1.8,因為Tomcat 6不支持JDK 1.8,編譯錯誤也正常,從報錯信息里也可以看出來。
3. 解決方法
前往Apache的官網找Maven的插件,我們要將Maven的默認Tomcat改成支持JDK1.8的Tomcat插件。
Maven插件官網:http://maven.apache.org/plugins/
在 Misc 一欄里找到 Apache Tomcat,點進去。
Apache提供了四個版本的Tomcat。
每個版本里面都分Tomcat 6 和 Tomcat 7 兩種插件。
選擇最新的 Version 2.2 中的 Tomcat 7 插件,將代碼寫到項目的 pom.xml 文件下的<build> <plugins> 標簽下。
<build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> </plugin> </plugins> </build>
在運行Maven Goal的時候一定要注意把 tomcat:run 改成 tomcat7:run,否則還是會運行默認的 Tomcat 6。
成功啟動 Tomcat 7 ,這下應該沒問題了。
4. 注意事項
(1) 更換了 Tomcat 插件以后,最好修改一下當前 Tomcat 的端口,否則可能會和默認的 Tomcat 沖突引發錯誤。
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8888</port>
</configuration>
</plugin>
(2) 經過測試,Tomcat 7 插件 2.1版本(Tomcat/7.0.37)、2.0版本(Tomcat/7.0.30)、2.0-beta-1版本(Tomcat/7.0.25) 都可以兼容JDK1.8。