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

來源:互聯網
上載者:User

標籤:webapps   自己   系統   out   directory   test   雙擊   status   ica   

最近要做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目錄名稱正好被上面的Regex匹配到,所以Tomcat在載入的時候就直接忽略了,導致了那個404錯誤。

 

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

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.