Spring Boot应用启动失败:Linux环境8080端口被占用
解决Linux下Spring Boot应用因8080端口占用无法启动的问题
问题分析
错误栈最终指向java.net.BindException: Address already in use,说明8080端口被其他进程占用,且重启应用/主机后仍未释放,大概率是进程未正常终止或有后台进程持续占用该端口。
解决步骤
1. 定位占用8080端口的进程
执行以下命令之一,获取占用端口的进程ID(PID):
使用
lsof命令:lsof -i :8080输出中
PID列即为目标进程ID,COMMAND列显示进程名称。使用
netstat命令(部分系统需先安装net-tools包):netstat -tulpn | grep :8080输出中最后一列的
PID/进程名即为占用端口的进程信息。
2. 终止占用端口的进程
根据获取到的PID,执行终止命令:
- 常规终止:
kill <PID> - 若进程无法正常终止,强制杀死:
kill -9 <PID>
3. 验证端口释放状态
再次执行步骤1中的命令,若无输出则说明8080端口已释放,此时可重新启动Spring Boot应用。
特殊情况处理
如果上述操作后端口仍被占用:
- 检查是否为僵尸进程:执行
ps aux | grep <PID>,若进程状态为Z,需排查系统层面资源回收问题。 - 排查系统服务:执行
systemctl list-units | grep -i 8080,确认是否有系统级服务绑定8080端口,若有需调整该服务端口(但用户说明其他服务正常,此情况概率较低)。
内容的提问来源于stack exchange,提问作者Krktester23
相关产品推荐
相关产品推荐

