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

解決 Tomcat 啟動報錯:端口 8005/8080/8009 被佔用的快速排查與終結方案

     編輯:Java 綜合教學

現象

Eclipse/MyEclipse 啟動 Tomcat v7.0 時彈窗報錯:

Several ports (8005, 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. To start this server you will need to stop the other process or change the port number(s).

端口佔用報錯

根因

  • 已有 Tomcat 進程在運行(未正確關閉)。
  • 其他程序佔用了 8080(HTTP)、8005(Shutdown)、8009(AJP)端口。
  • 系統服務或殘留進程持有端口。

解決方案:查找並殺死佔用進程(Windows)

步驟 1:查看端口佔用情況

打開 CMD(管理員權限),執行:

netstat -ano | findstr 8080
  • -a:顯示所有連接和監聽端口
  • -n:直接顯示 IP 和端口號
  • -o:顯示進程 PID
  • findstr 8080:篩選 8080 端口(同理可查 8005、8009)

netstat查詢結果

輸出示例:TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 1952 → PID = 1952 佔用了 8080。

步驟 2:強制終結進程

taskkill /pid 1952 /f
  • /pid 1952:指定進程 ID
  • /f:強制終結

taskkill執行結果

步驟 3:再次啟動 Tomcat

返回 Eclipse,重新啟動 Server,問題解決。

進階:修改 Tomcat 默認端口(避免衝突)

若不想殺進程,或需同時運行多個 Tomcat,可修改 conf/server.xml:

<Server port="8005" shutdown="SHUTDOWN">
<Connector port="8080" protocol="HTTP/1.1" ... />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

將三個端口改為未被佔用的值(如 18005/18080/18009),保存後重啟即可。

Linux/Mac 下的等效命令

# 查找佔用 8080 的進程
lsof -i :8080
# 或
netstat -tlnp | grep 8080

# 終結進程(假設 PID 為 1234)
kill -9 1234

常見誤區提醒

  • 僅關閉 Eclipse 控制台不等於停止 Tomcat,進程可能仍在後台運行。
  • 某些安全軟件、代理工具(如 Shadowsocks、V2Ray)默認也佔用 8080,需排查。
  • 若 taskkill 提示「拒絕訪問」,請以管理員身份運行 CMD。

掌握這套「查端口 → 找 PID → 殺進程」流程,端口衝突問題再也不會攔住你的開發節奏。

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