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程序,端口占用解除,启动成功。

相关推荐
学长毕设7 小时前
基于SpringBoot的实验室资产管理系统
java·spring boot·后端
zzu123zsw8 小时前
从臃肿的模板调用到声明式契约:深入 UniHttp 动态代理与多渠道生命周期扩展
java·spring boot·microsoft·unihttp
源码集结号9 小时前
云诊所门诊系统源码,基于SpringBoot+Vue.js架构,支持多租户设计与Docker容器化部署
java·spring boot·源码·医院信息系统·门诊系统·诊所系统
论文复现现场10 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
啃瓜子的松鼠10 小时前
泛微OAe9-后端二开异步调用
java
秋天的怀念_David11 小时前
第二十一夜 · 数字黑洞与西西弗斯的惩罚
java·程序人生·算法
外收内放11 小时前
Python基础语法练习题(73)
java·前端·python
Wang's Blog11 小时前
Java 项目实战: 交友项目 - 环信后台发送消息测试
java·交友
用户37215742613511 小时前
Java 操作 Word 脚注和尾注:添加、读取与删除
java
小嘉丶学长12 小时前
Day14 · 字典与集合
java·开发语言·网络·python·学习·1024程序员节