ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

启动报Port 8088 was already in use?先查是谁占的

启动报Port 8088 was already in use?先查是谁占的

启动报Port 8088 was already in use?先查是谁占的

项目启动报 Port 8088 was already in use,意思很直白:这个端口已经有人占了。

先说原理:端口是"门牌号",一间房只住一个进程

端口就是一台机器上的门牌号。TCP 的规则是:同一个端口,同一时刻只能有一个进程在监听。Spring Boot 内嵌的 Tomcat 启动时要干的第一件事,就是去"租"8088 这个门牌号——租成功了,它就开始接请求;租的时候发现里面已经住了人,就报 already in use,启动直接失败。

所以这句话不是在说你的配置错了,而是在说:门牌号被占了,先查里面住的是谁。

常见三种情况

  1. 上一个项目进程没死透——最常见。IDEA 里点了停止,其实 java 进程还挂在后台,端口没还回来;
  2. 两个项目配了同一个端口——启动第二个时必然撞车;
  3. 别的程序占了这个口——比如系统服务或者别的开发工具。

排查两步

第一步,查谁占的:

netstat -ano | findstr 8088

看输出里状态是 LISTENING 的那一行:

TCP 0.0.0.0:8088 0.0.0.0:0 LISTENING 12345

每一列分别是:协议、本地地址、外部地址、状态、PID(最后一列)。12345 就是占着 8088 的进程号,可以拿到任务管理器里对一下,确认是不是那个没死透的 java 进程。

第二步,杀进程:

taskkill /F /PID 12345

/F是强制结束。看到"成功: 已终止 PID 为 12345 的进程"之后,重新启动项目,顺利拉起。

为什么别急着改端口号

有人图省事,直接换个端口启动。能跑,但这是绕开问题:那个没死透的进程还挂着,下次再启动,你换的新端口如果又被别的占了,还得再换。问题不在端口号,在没死透的进程——查清楚、杀干净,才是治本。

补充一句提醒:taskkill /IM java.exe这种按名字杀的写法慎用——它会把你机器上所有java 进程全杀掉,包括别的项目。

记住这条:端口占用先查进程、再杀进程,别急着改端口号。

需要SpringBoot管理系统源码、SQL脚本、部署文档做学习参考,可以私信联系。项目仅作为编程学习、课程设计参考素材,不代写论文。

返回列表