理解 Tomcat 的啟動流程對於排查部署問題、配置多實例環境至關重要。本文詳細剖析 startup.bat 與 catalina.bat 的運作邏輯,重點說明 CATALINA_HOME 環境變數的決定性作用。
打開 bin/startup.bat 可見其執行流程:
CATALINA_HOME 是否已設定CATALINA_HOME%CATALINA_HOME%\bin\catalina.bat 是否存在catalina.bat start 啟動服務這意味著:若在 bin 目錄下執行 startup.bat,Tomcat 能自動正確推導 CATALINA_HOME;但在其他目錄執行則會失敗,除非已預先設定環境變數。
當您想在任意目錄下啟動 Tomcat,或運行多個 Tomcat 實例時,必須明確指定 CATALINA_HOME。設定方式有二:
CATALINA_HOME,值為 Tomcat 安裝根目錄(如 D:\apache-tomcat-6.0.36)set CATALINA_HOME=您的安裝路徑同理,shutdown.bat 也需設定 CATALINA_HOME 與 JAVA_HOME 才能在任意目錄關閉服務。
早期 Tomcat 4 之前使用 TOMCAT_HOME,Tomcat 4 引入新 Servlet 容器 Catalina 後,環境變數隨之更名為 CATALINA_HOME,以反映核心架構變更。
catalina.bat 是真正負責啟動的腳本,支援參數:
start:在新視窗啟動(預設模式)run:在當前視窗啟動,除錯首選,可直接查看控制台錯誤輸出stop:關閉服務實戰技巧:遇到啟動失敗且無日誌輸出時,改用 catalina.bat run 可在當前終端保留完整錯誤堆疊,快速定位問題。
startup.bat → 呼叫 catalina.bat startcatalina.bat → 呼叫 setclasspath.bat 驗證 JAVA_HOME 並定位 java.exeBootstrap 主類,初始化 Catalina 容器掌握這些細節,能讓您從容應對 Tomcat 部署、遷移與疑難雜症排查。