Eclipse創建Maven結構的web項目的時候選擇Artifact Id為maven-artchetype-webapp,點擊finish之后,一般會遇到如下問題
1. The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 錯誤,
這是eclipse環境里沒有SeverRuntime導致的,在BuildPath里加入即可,如下圖:
添加前:
選擇 add library
選擇 Apache Tomcat V7.0 並點擊 next
點擊finish之后,完成添加如下圖
2. 如何Maven創建動態Web項目后產生的版本不匹配的問題
我們用Eclipse創建Maven結構的web項目的時候選擇了Artifact Id為maven-artchetype-webapp,由於這個catalog比較老,用的servlet還是2.3的、java版本是1.5的,而一般現在至少都是3.0/1.7,因此我們需要逐個修改!
(1) 修改JRE 版本
Go to project Build Path and change the Java Library version to 1.7
刪除原先的低版本JRE,並添加workplace默認的版本(JDK1.7),完成后如下:
(2) Eclipse Preferences -> Java -> Compilre -> Change compliance level to 1.7
(3) 修改 Project Facets 版本(注意順序)
在項目上單機右鍵 -> Properties -> Project Facets -->取消選中 Dynamic Web Module 狀態,點擊 Apply -->將 Java facet 版本變為 1.7 ,點擊 Apply如下圖
-->將 Dyanmic Web Module 版本更改為3.0, 點擊 Apply.
此時會有較大幾率提示: web.xml is missing and <failOnMissingWebXml> is set to true,如下圖
解決辦法,在項目上單擊右鍵-->java EE Tools ---> Generate Deployment Descriptro Stub
OK 問題解決
3. 解決發布之后404錯誤
默認情況下因為默認的deployment assembly中 webapp路徑的問題,如下圖可以看到默認的webapp下的頁面都被發布到WEB-INF/class下了,
導致出現了如下圖的目錄結構,所以所有的jsp都無法訪問以及通過web.xml加載的ssm環境無法初始化!
修改webapp對應的發布路徑為/之后,部署的目錄結構變為:
可以看到jsp還有web.xml、spring的配置文件都出現在根目錄了! 問題解決!