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

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

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

更奇怪的是,經過Tomcat的bin目錄下的啓動腳本就能夠正常啓動,不管是雙擊startup.bat仍是在該目錄的cmd下使用catalina.bat run都能正常啓動項目。正則表達式

 

若是有相似狀況的朋友,能夠留意一下兩種啓動方式在啓動時日誌裏面的環境變量,特別是CATALINA_HOME瀏覽器

由於在個人機器上,兩種方式啓動時這個變量的值是不同的,在bin目錄下經過bat腳本啓動時,CATALINA_HOME就是該bin所在的Tomcat目錄;tomcat

可是經過Intellij IDEA啓動時,該變量的值變爲了:C:\Users\Cratical\.IntelliJIdea2017.1\system\tomcat\Unnamed_Test-Project_3_0_4app

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

 

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

 

由於在Intellij IDEA中,一個war格式的artifact是能夠修改Output Directory的位置的,默認值是當前Project根目錄下的target文件夾;若是直接使用Intellij IDEA啓動Tomcat的時候,Tomcat目錄下的webapps目錄是找不到相關部署文件夾的。日誌

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

 

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

 

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

相關文章
相關標籤/搜索