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

Tomcat 8080 端口被佔用?三步快速定位與解決

     編輯:Java 相關知識

現象

啟動 Tomcat 時報錯:Bind exception: Address already in use: bind <null:8080>,瀏覽器無法訪問 https://localhost:8080。

三步解決流程

步驟 1:確認端口佔用

# Windows
netstat -ano | findstr :8080

# Linux/macOS
netstat -tlnp | grep :8080
# 或
ss -tlnp | grep :8080

輸出範例:TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 1234,最後一列 PID=1234 即佔用進程。

步驟 2:識別並處理佔用進程

場景處理方式
非關鍵進程(如舊 Tomcat、測試程序、某些 IDE 內建伺服器)直接結束進程:
taskkill /PID 1234 /F (Win)
kill -9 1234 (Linux)
關鍵業務進程(如生產服務、數據庫、Nginx)不可殺死,轉步驟 3 修改 Tomcat 端口
系統進程/未知進程謹慎處理,可用 tasklist /FI "PID eq 1234" 或 ps -p 1234 -o cmd 查看詳情再決定

步驟 3:修改 Tomcat 端口(通用備案)

  1. 編輯 $CATALINA_HOME/conf/server.xml
  2. 找到 <Connector port="8080" .../>
  3. 修改為未佔用端口,如 8088、8888、18080
  4. 重啟 Tomcat 驗證:https://localhost:8088

進階:避免端口衝突最佳實踐

  • 開發環境:統一規範端口分配(如 8080/8081/8082 給不同專案),寫入團隊文檔。
  • 容器化部署:Docker 映射隨機宿主端口 -p 0:8080,由反向代理(Nginx/Traefik)路由。
  • 系統級:修改 /etc/services 註冊自定義端口,避免系統服務搶佔。
  • 檢測腳本:啟動腳本前置檢查端口佔用,自動重試或報警。

常見誤區

  • ❌ 只改 server.xml 不殺舊進程 → 雙實例衝突、資源洩漏。
  • ❌ 修改後防火牆未放行新端口 → 外網不可訪問。
  • ❌ 忽略 shutdown port (8005)、AJP port (8009) 同樣可能衝突。

總結

netstat 定位 PID → 業務判斷殺否 → 不可殺改端口,三步走解決 99% 端口衝突。養成端口規劃與容器化習慣,從根源消除此類運維干擾。

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