调试程序进程无法启动,提示端口占用,Web server failed to start. Port xxxx was already in use.

发布于 16 小时前  29.41k 次阅读


在用idea intellij 调试程序的时候,明明没有java进程,启动服务却老是提示

Web server failed to start. Port 8100 was already in use.

netstat -ano | findstr "8100"

也没有其他进程占用,就算有杀掉进程问题还存在,有时候重启也没用。

其实是因为开启了Hyper-V / WSL 保留端口,Hyper-V 会随机保留大量端口,导致"幽灵占用":

PS C:\Windows\system32> netsh int ipv4 show excludedportrange protocol=tcp

协议 tcp 端口排除范围

开始端口    结束端口
----------    --------
      1077        1176
      1177        1276
      1277        1376
      1377        1476
      1477        1576
      7993        8092
      8093        8192
      8262        8361
      8362        8461
      8462        8561
     50000       50059     *

* - 管理的端口排除。

手动修改范围即可

# 以管理员执行
netsh int ipv4 set dynamicport tcp start=49152 num=16383
netsh int ipv4 set dynamicport udp start=49152 num=16383

# 验证设置
PS C:\Windows\system32> netsh int ipv4 show dynamicport tcp

协议 tcp 动态端口范围
---------------------------------
启动端口        : 49152
端口数          : 16383

修改完重启即永久生效。