Intellij 週六晚上開發一個簡單web項目的,使用tomcat打包部署,死活也無法部署成功,和這個問題懟了6個小時,也沒搞清楚具體爲何不能訪問頁面,可是好在最後仍是找了個方法把問題解決了。如下是問題的一些問題的描述和解決辦法,若是你也遇到了類似問題,但願能夠給你幫助:web
問題描述:spring
1:部署看起來是成功的,啓動的時候控制檯不報任何錯誤,顯示的是應用啓動成功,可是瀏覽器訪問無效,甚至就連配置的index.jsp也法自動訪問;瀏覽器
2:部署時出現了out文件夾,每次從新部署時會更新這個文件夾中的文件;spring-mvc
3:正常的部署在部署時會加載相關配置,通常來講在「Artifact SimplestSpringMVCDemo:war: Artifact is being deployed, 」,這一句後面,是tomcat解析web.xml時的日誌輸出,相似這樣:tomcat
(在兩行藍字中間時Tomcat輸出的相關信息)mvc
可是我週六進行部署的時候,tomcat在兩行藍色之間,並無打印出任何信息。app
問題解決過程:eclipse
用過Intellj的童鞋應該都知道,在Intellij裏面部署一個tomcat項目是簡單的,只要配置一下tomcat的基本配置,而後選擇添加要部署的artifact(也就是war包)就能夠了。jsp
可是一直部署不上,期間試過不少辦法,也用本身的方式嘗試改web.xml的配置,故意將web.xml的配置改錯驗證是否真的讀取了這個配置文件(讀取了,可是tomcat沒有進行進一步的解析,也不知道爲何);也查看了Intellij自動生成的tomcat配置文件查看路徑指向的部署的項目(編譯後的文件)是否存在,可是一直沒有找到正確的解決辦法。ide
後來終於在stacak overflow上找到了一位仁兄的建議,說是重啓電腦後把Intellij配置的tomcat項目刪掉再添加進來就能夠了,試了一下,果真OK。
解決方案總結:
重啓電腦,將Tomcat部署的項目刪掉,從新添加這個web項目。
-----------------------------------------------------分割線,趕時間的不用繼續看下去了--------------------------------------------------------------------------------------------------------------------------------------------------------------------
對問題的分析:
在解決該問題以後我回顧了一下,發如今成功部署時未產生out文件夾;
通過改動web.xml屢次測試發現,若是將xml文件中的某個標籤改動,使之不能成對匹配(以下圖),那麼控制檯就會報錯。不然不論如何改動web.xml這個文件(例如使用未定義的標籤,改動spring配置文件使之錯誤)。說明web.xml仍是被解析了的,可是其中的內容沒有被tomcat的容器處理,也就是說tomcat讀了,可是沒有調用具體的流程去處理它。
綜合這兩點考慮,是否是由於idea生成out文件夾並依據這個部署項目的話,tomcat沒法正確讀取項目的配置內容呢?
因而,我又想起了當年使用eclipse部署tomcat項目的時候,默認配置也是額外生成一個單獨的web項目,相似這樣
經過conf裏xml配置文件的內容指定去哪裏讀取web項目的全部文件:
路徑(好久不用eclipse了,這個使idea的配置文件路徑):IntelliJIdea2017.3\system\tomcat\Unnamed_SimplestDemos_5\conf\Catalina\localhost
<?xml version="1.0" encoding="UTF-8"?>
<!--docbase指定了項目發佈的目錄,path指定了瀏覽器訪問的路徑--> <Context docBase="D:\Programming\GithubRepository\SimplestDemos\SimplestSpringMVC\out\artifacts\SimplestSpringMVC_Web_exploded" path="/spring-mvc-study" reloadable="true" source="org.eclipse.jst.j2ee.server:spring-mvc-study" />
也是莫名其妙出問題,最後將eclipse裏tomcat的配置改成部署到tomcat的web-app目錄下,啓動tomcat的全部項目才成功的。
因此是否是這種額外生成一個項目目錄(而非war包)的方式沒法被tomcat正確處理呢?
出於時間的關係,我沒有繼續進行探究了。不知道有沒有大神明白這其中的原理呢?若是您知道這其中的曲折,請您留言或者聯繫個人郵箱ct_csu@foxmail.com,在此先多謝了!