启动报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,启动直接失败。
所以这句话不是在说你的配置错了,而是在说:门牌号被占了,先查里面住的是谁。
常见三种情况
- 上一个项目进程没死透——最常见。IDEA 里点了停止,其实 java 进程还挂在后台,端口没还回来;
- 两个项目配了同一个端口——启动第二个时必然撞车;
- 别的程序占了这个口——比如系统服务或者别的开发工具。
排查两步
第一步,查谁占的:
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脚本、部署文档做学习参考,可以私信联系。项目仅作为编程学习、课程设计参考素材,不代写论文。