異常堆棧
java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind
根本原因
目標端口(默認 8080)已被佔用,常見於:
- 多個 Tomcat 實例同時啟動。
- Tomcat 與數據庫(如 Oracle 1521、MySQL 3306)端口衝突。
- 上次關閉未完全釋放,進程殘留。
解決方案
方案一:修改 Tomcat 端口(推薦)
- MyEclipse Servers 視圖右鍵 Tomcat → Configure Server Connector。
- 將 Port Number 從 8080 改為 8088(或其他空閒端口)。
- 重啟 Server。
方案二:殺掉佔用進程
- 右鍵「計算機」→ 管理 → 服務與應用程序 → 服務。
- 找到多餘的 Tomcat 服務 → 右鍵 停止。
- 或命令行:
netstat -ano | findstr :8080 找 PID,taskkill /PID /F 強制結束。
預防建議
- 開發環境統一規劃端口範圍(如 8080-8090 給 Tomcat,3306 給 MySQL)。
- 使用
shutdown.sh/shutdown.bat 正規關閉,避免殘留進程。
- Docker 容器化部署時通過
-p 映射固定宿主端口,隔離衝突。