首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Tomcat 啟動報錯「端口已被佔用」完整排查與解決指南

     編輯:Java 綜合教學

問題現場:Eclipse 異常退出導致 Tomcat 僵屍進程

開發中常遇場景:Eclipse 強制關閉或崩潰後,再次啟動 Tomcat 時控制台噴紅:

Several ports (8080, 8009) required by Tomcat v7.0 Server at localhost are already in use. The server may already be running in another process, or a system process may be using the port.

根因:上一次 Tomcat 進程未正常關閉,仍佔用 8080(HTTP)、8009(AJP)等端口。

方案一:任務管理器「暴力」斷點(適合新手、圖形化操作)

  1. 打開任務管理器(Ctrl+Shift+Esc),切換到「詳細信息」頁簽。
  2. 鍵盤按 J 快速定位以 javaw.exe 開頭的進程。
  3. 通常有兩個 javaw.exe:內存佔用較小者(約 300-400 MB)為 Tomcat,較大者為 Eclipse。
  4. 右鍵選中較小的 Tomcat 進程 → 「結束任務」。
  5. 回到 Eclipse 重啟 Tomcat,問題解決。

任務管理器中 javaw.exe 進程

結束 Tomcat 進程

方案二:命令行精準狙擊(適合自動化腳本、無界面服務器)

步驟 1:查詢端口佔用進程 PID

netstat -aon | findstr 8080

輸出示例:TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 8020,最後一列 8020 即 PID。

netstat 查詢端口佔用

步驟 2:根據 PID 確認進程名(可選,防誤殺)

tasklist | findstr 8020

輸出確認為 javaw.exe 後再執行殺進程。

步驟 3:強制終止進程

taskkill /f /pid 8020

成功提示:成功: 已終止 PID 8020 (屬於 PID 7480 子進程)的進程。

taskkill 成功終止進程

進階:按進程名批量清理

taskkill /f /t /im javaw.exe

/t 同時終止子進程,/im 指定映像名稱。慎用! 會連同 Eclipse 一起關閉。

根治建議:規範關閉流程

  • Eclipse 中點擊紅色方塊「Terminate」正常停止 Server,再關閉 IDE。
  • 配置 Tomcat bin/shutdown.sh(Linux/Mac)或 shutdown.bat(Windows)腳本納入項目停機腳本。
  • 生產環境建議使用 systemd、Supervisor 或容器編排工具管理進程生命週期。

掌握這兩招,下次再見「Address already in use」不再手忙腳亂。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved