Intellij IDEA + Tomcat 出現 HTTP status 404錯誤的解決辦法


最近要做POC,接了個老項目改,使用war exploded部署到本機的Tomcat(8.5版)

通過Intellij IDEA啟動Tomcat的時候發現系統的登錄頁面出現HTTP-status-404錯誤,這時直接在瀏覽器中打開http://localhost:8080則能打開Tomcat的歡迎頁面,說明Tomcat起來了,但是沒有正確加載webapps目錄下的東西。

更奇怪的是,通過Tomcat的bin目錄下的啟動腳本就可以正常啟動,無論是雙擊startup.bat還是在該目錄的cmd下使用catalina.bat run都能正常啟動項目。

 

如果有類似情況的朋友,可以留意一下兩種啟動方式在啟動時日志里面的環境變量,特別是CATALINA_HOME

因為在我的機器上,兩種方式啟動時這個變量的值是不一樣的,在bin目錄下通過bat腳本啟動時,CATALINA_HOME就是該bin所在的Tomcat目錄;

但是通過Intellij IDEA啟動時,該變量的值變為了:C:\Users\Cratical\.IntelliJIdea2017.1\system\tomcat\Unnamed_Test-Project_3_0_4

兩個目錄下面都有conf文件夾,文件夾里面的配置文件的名稱和數量也都一樣,通過比對,發現conf目錄下,server.xml的內容有一些區別,注意這一行

 

<Host name="localhost" appBase="C:\Tomcat\webapps" unpackWARs="true" autoDeploy="true" deployOnStartup="false" deployIgnore="^(?!(manager)|(tomee)$).*">

 

因為在Intellij IDEA中,一個war格式的artifact是可以修改Output Directory的位置的,默認值是當前Project根目錄下的target文件夾;如果直接使用Intellij IDEA啟動Tomcat的時候,Tomcat目錄下的webapps目錄是找不到相關部署文件夾的。

而Intellij IDEA是通過生成自己的一個CATALINA_HOME,修改其中的server.xml中的appBase來實現這個目標的。

 

回到上面那行配置,注意那個deployIgnore屬性,我的web目錄名稱正好被上面的正則表達式匹配到,所以Tomcat在加載的時候就直接忽略了,導致了那個404錯誤。

 

Tomcat server.xml中各項配置的含義,參見:http://www.importnew.com/17124.html


免責聲明!

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



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