Intellj Idea使用tomcat部署不成功,死活也找不到解決辦法的看這里


Intellij 周六晚上開發一個簡單web項目的,使用tomcat打包部署,死活也沒法部署成功,和這個問題懟了6個小時,也沒搞清楚具體為什么不能訪問頁面,但是好在最后還是找了個方法把問題解決了。以下是問題的一些問題的描述和解決辦法,如果你也遇到了相似問題,希望可以給你幫助:

問題描述:

1:部署看起來是成功的,啟動的時候控制台不報任何錯誤,顯示的是應用啟動成功,但是瀏覽器訪問無效,甚至就連配置的index.jsp也法自動訪問;

2:部署時出現了out文件夾,每次重新部署時會更新這個文件夾中的文件;

3:正常的部署在部署時會加載相關配置,一般來說在“Artifact SimplestSpringMVCDemo:war: Artifact is being deployed, ”,這一句后面,是tomcat解析web.xml時的日志輸出,類似這樣:

(在兩行藍字中間時Tomcat輸出的相關信息)

但是我周六進行部署的時候,tomcat在兩行藍色之間,並沒有打印出任何信息。

 

問題解決過程:

用過Intellj的童鞋應該都知道,在Intellij里面部署一個tomcat項目是簡單的,只要配置一下tomcat的基本配置,然后選擇添加要部署的artifact(也就是war包)就可以了。

但是一直部署不上,期間試過很多辦法,也用自己的方式嘗試改web.xml的配置,故意將web.xml的配置改錯驗證是否真的讀取了這個配置文件(讀取了,但是tomcat沒有進行進一步的解析,也不知道為什么);也查看了Intellij自動生成的tomcat配置文件查看路徑指向的部署的項目(編譯后的文件)是否存在,但是一直沒有找到正確的解決辦法。

后來終於在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,在此先多謝了!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM