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

相关推荐
愿你天黑有灯下雨有伞27 分钟前
告别复杂配置!Spring Boot优雅集成百度OCR的终极方案
spring boot·百度·ocr
我命由我123452 小时前
Kotlin 数据容器 - List(List 概述、创建 List、List 核心特性、List 元素访问、List 遍历)
java·开发语言·jvm·windows·java-ee·kotlin·list
武子康4 小时前
Java-80 深入浅出 RPC Dubbo 动态服务降级:从雪崩防护到配置中心秒级生效
java·分布式·后端·spring·微服务·rpc·dubbo
舒一笑5 小时前
我的开源项目-PandaCoder迎来史诗级大更新啦
后端·程序员·intellij idea
YuTaoShao7 小时前
【LeetCode 热题 100】131. 分割回文串——回溯
java·算法·leetcode·深度优先
源码_V_saaskw7 小时前
JAVA图文短视频交友+自营商城系统源码支持小程序+Android+IOS+H5
java·微信小程序·小程序·uni-app·音视频·交友
超浪的晨8 小时前
Java UDP 通信详解:从基础到实战,彻底掌握无连接网络编程
java·开发语言·后端·学习·个人开发
双力臂4048 小时前
Spring Boot 单元测试进阶:JUnit5 + Mock测试与切片测试实战及覆盖率报告生成
java·spring boot·后端·单元测试
Edingbrugh.南空9 小时前
Aerospike与Redis深度对比:从架构到性能的全方位解析
java·开发语言·spring
QQ_4376643149 小时前
C++11 右值引用 Lambda 表达式
java·开发语言·c++