You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

启动Spring Boot项目时无进程监听端口却提示端口被占用如何解决

根本原因

  • Windows系统保留端口冲突(最高发):如果你的设备开启了Hyper-V、WSL2、Docker Desktop、Windows容器任意一项功能,系统会随机预留一段TCP端口作为NAT网络专用,这段端口普通应用无法绑定,即便没有进程监听,绑定操作也会抛出端口占用异常。重启设备后系统会重新生成预留端口段,刚好避开你使用的端口时就会临时恢复正常,等预留段更新覆盖你要用的端口时问题会复现,这也能解释你换端口依然报错的现象——更换的端口刚好落在预留段范围内。
  • 多端口配置冲突:如果项目开启了Actuator监控、GRPC服务等额外组件,会存在独立的端口配置(比如management.server.port),仅修改主服务端口server.port不会同步修改这类附加端口,依然会触发占用报错。
  • 半开连接残留:端口对应的连接处于TIME_WAIT等未完全释放的状态,使用默认参数的netstat等端口查询命令不会展示这类状态的连接,会让你误判端口未被占用。

解决方案

1. 修复系统预留端口冲突

首先执行命令确认你的端口是否落在预留范围内:

netsh interface ipv4 show excludedportrange protocol=tcp

如果输出的端口范围包含你要使用的端口,按以下步骤操作即可永久解决:

  • 管理员身份打开CMD,关闭Hyper-V服务,执行后按提示重启设备:
    dism /online /disable-feature:microsoft-hyper-v /all
  • 重启后再次打开管理员CMD,将你常用的开发端口段设置为系统不得占用的排除段,比如要排除8000-9000区间,执行:
    netsh int ipv4 add excludedportrange protocol=tcp startport=8000 numberofports=1000 store=persistent
  • 重新开启Hyper-V服务,执行后再次重启设备即可:
    dism /online /enable-feature:microsoft-hyper-v /all

2. 排查全量端口配置

检查项目的application.yml、application.properties、启动参数三类配置,确认所有自定义端口(包括监控端口、第三方组件端口)都没有冲突,按需修改即可。

3. 清理半开连接

如果是连接残留问题,管理员身份执行命令重置TCP/IP栈,重启网卡即可恢复:
netsh int ip reset

内容的提问来源于stack exchange,提问作者lzy513

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 19:54:00