一、HTTP狀態碼錯誤(常見于訪問日志)
HTTP狀態碼是Tomcat返回給客戶端的狀態標識,直接反映請求處理結果,常見錯誤代碼及含義如下:
web.xml
中的安全約束配置。chmod
命令調整權限),或web.xml
中的授權配置。webapps
目錄下是否存在對應WAR包或目錄)。@RequestMapping
注解是否包含對應方法)。catalina.out
)中的詳細異常堆棧,定位具體錯誤原因(如空指針、SQL語法錯誤)。maxThreads
參數值)、擴容服務器資源(如CPU、內存),或檢查數據庫連接池狀態(如Threads_connected
指標)。二、啟動/配置錯誤(常見于catalina.out或localhost.log)
這類錯誤通常導致Tomcat無法正常啟動或運行,常見類型及解決方法:
netstat -tulnp | grep <端口號>
(如8080)查找占用進程,終止該進程或修改Tomcat的server.xml
中的<Connector>
端口配置(如將8080改為8081)。server.xml
中存在未閉合的標簽、無效屬性)。解決方法:使用XML驗證工具(如IDE的XML校驗功能)檢查配置文件語法,參考Tomcat官方文檔確認屬性是否正確。lib
目錄(全局依賴)或應用的WEB-INF/lib
目錄(應用級依賴),檢查類名拼寫是否正確。setenv.sh
或catalina.sh
中設置),如-Xms512m
(初始堆大?。?、-Xmx1024m
(最大堆大?。?、-XX:MaxMetaspaceSize=256m
(元空間最大大?。?,建議不超過系統物理內存的70%。三、運行時異常(常見于應用日志)
這類錯誤由應用程序代碼邏輯問題或外部依賴異常引起,常見類型及解決方法:
String str = null; str.length()
)。解決方法:檢查代碼中對象的初始化邏輯,添加null判斷(如if (str != null)
)。int[] arr = new int[5]; int val = arr[5]
)。解決方法:檢查循環或索引操作的邊界條件,確保索引在有效范圍內(如0 <= index < arr.length
)。jdbc.properties
中的URL、用戶名、密碼),驗證SQL語句的正確性(如在數據庫客戶端中執行),確認數據庫服務是否正常運行。Object obj = "hello"; Integer num = (Integer) obj
)。解決方法:檢查類型轉換的合法性,使用instanceof
關鍵字判斷對象類型(如if (obj instanceof Integer)
)。for (String s : list) { list.remove(s); }
)。解決方法:使用迭代器的remove()
方法(如Iterator<String> it = list.iterator(); while (it.hasNext()) { it.remove(); }
),或使用并發集合(如CopyOnWriteArrayList
)。