IDEA关闭SpringBoot程序后仍然占用端口的排查与解决

IDEA关闭SpringBoot程序后仍然占用端口的排查与解决

问题描述

在使用 IntelliJ IDEA 开发 Spring Boot 应用时,有时即使关闭了应用,程序仍然占用端口(例如:4001 端口)。这会导致重新启动应用时出现端口被占用的错误,在windows系统下有时候执行命令netstat -ano | findstr "4001"也无法找到被占用的端口,本文将详细描述如何解决此问题。


1 问题复现

启动springboot应用后,提示端口已经被占用

2 排查步骤

1 确认端口占用情况

使用以下命令检查哪个进程占用了目标端口:

bash 复制代码
netstat -ano | findstr :<端口号>

示例:检查 4001 端口是否被占用。

bash 复制代码
netstat -ano | findstr :4001

正常端口被占用情况下,会显示如下,画框部分13036为应用程序PID

2 找到占用端口的进程 ID

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

或者cmd命令框输入如下命令查找

tasklist | findstr "13036"

3 终止占用端口的进程

直接任务管理器关闭程序

使用以下命令强制终止该进程:

bash 复制代码
taskkill /PID <PID> /F

示例:

bash 复制代码
taskkill /PID 13036 /F

注意:极端情况下,idea运行spirngboot程序时,由于强制关闭或者其他原因,造成java程序没有彻底释放,还在后台运行,导致原java程序始终占用着端口,具体表现为:

启动后端口任被占用 查找被占用的4001端口时,显示空白找不到

  • 解决方法:
    1. 检查是否有残留的 Java 进程:

      cmd 复制代码
      tasklist | findstr java
    2. 如果发现多余的 Java 进程,强制结束它:

      cmd 复制代码
      taskkill /f /pid <PID>

示例:强制删除多余的java线程。

bash 复制代码
netstat -ano | findstr :22084
netstat -ano | findstr :22320

删除完毕后,重新启动springboot程序,端口占用解除,启动成功。

相关推荐
猿周LV5 分钟前
多线程进阶 : 八股文面试题 一 [Java EE 多线程 锁和死锁相关问题]
java·开发语言·java-ee
茂茂在长安16 分钟前
JAVA面试常见题_基础部分_Mysql调优
java·mysql·面试
m0_6845985330 分钟前
心理咨询小程序的未来发展
java·微信小程序·小程序开发·心理咨询小程序·心理测评小程序
PXM的算法星球1 小时前
(java/Spring boot)使用火山引擎官方推荐方法向大模型发送请求
java·spring boot·火山引擎
web_132334214361 小时前
Java实战:Spring Boot application.yml配置文件详解
java·网络·spring boot
神仙别闹1 小时前
基于C#+SQL Server设计与实现的教学管理信息系统
java·数据库·c#
啾啾Fun1 小时前
[java基础-JVM篇]2_垃圾收集器与内存分配策略
java·开发语言·jvm
计算机毕设指导62 小时前
基于Springboot的游戏分享网站【附源码】
java·spring boot·后端·mysql·spring·游戏·maven
羊小猪~~2 小时前
基于C++“简单且有效”的“数据库连接池”
java·开发语言·前端·数据库·c++·后端·adb