IDEA關(guān)閉SpringBoot程序后仍然占用端口的排查與解決方法
問題描述
在使用 IntelliJ IDEA 開發(fā) Spring Boot 應用時,有時即使關(guān)閉了應用,程序仍然占用端口(例如:4001 端口)。這會導致重新啟動應用時出現(xiàn)端口被占用的錯誤,在windows系統(tǒng)下有時候執(zhí)行命令netstat -ano | findstr "4001"也無法找到被占用的端口,本文將詳細描述如何解決此問題。
問題復現(xiàn)
啟動springboot應用后,提示端口已經(jīng)被占用

排查步驟
1 確認端口占用情況
使用以下命令檢查哪個進程占用了目標端口:
netstat -ano | findstr :<端口號>
示例:檢查 4001 端口是否被占用。
netstat -ano | findstr :4001
正常端口被占用情況下,會顯示如下,畫框部分13036為應用程序PID

2 找到占用端口的進程 ID
在win11下可以直接使用任務管理器搜索PID找到占用端口的程序,例如搜索到4001端口被QQ占用

或者cmd命令框輸入如下命令查找
tasklist | findstr "13036"

3 終止占用端口的進程
直接任務管理器關(guān)閉程序

使用以下命令強制終止該進程:
taskkill /PID <PID> /F
示例:
taskkill /PID 13036 /F
注意:極端情況下,idea運行spirngboot程序時,由于強制關(guān)閉或者其他原因,造成java程序沒有徹底釋放,還在后臺運行,導致原java程序始終占用著端口,具體表現(xiàn)為:
啟動后端口任被占用

查找被占用的4001端口時,顯示空白找不到

解決方法:
檢查是否有殘留的 Java 進程:
tasklist | findstr java
如果發(fā)現(xiàn)多余的 Java 進程,強制結(jié)束它:
taskkill /f /pid <PID>

示例:強制刪除多余的java線程。
netstat -ano | findstr :22084 netstat -ano | findstr :22320
刪除完畢后,重新啟動springboot程序,端口占用解除,啟動成功。

以上就是IDEA關(guān)閉SpringBoot程序后仍然占用端口的排查與解決方法的詳細內(nèi)容,更多關(guān)于IDEA關(guān)閉SpringBoot程序仍占用端口的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
spring和quartz整合,并簡單調(diào)用(實例講解)
下面小編就為大家?guī)硪黄猻pring和quartz整合,并簡單調(diào)用(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07
如何利用@PreAuthorize注解自定義權(quán)限校驗
通過使用@PreAuthorize注解實現(xiàn)開放接口的權(quán)限校驗,具體步驟包括開啟全局方法安全、編寫自定義鑒權(quán)方法、創(chuàng)建自定義異常類、在統(tǒng)一異常處理類中捕獲異常并處理,最后在需要鑒權(quán)的接口上貼上注解2024-12-12

