在SpringBoot项目开发中,Lesson5应用启动时出现的Tomcat端口8080占用错误应如何排查与解决?
在SpringBoot项目开发中,Lesson5应用启动时出现的Tomcat端口8080占用错误应如何排查与解决呀?不少做SpringBoot的小伙伴在练手Lesson5案例时,常碰到启动弹窗蹦出“端口8080被占”的提示,明明代码没改多少,却卡在这一步没法跑起来,急得挠头——其实这事不是啥大难题,摸清门路就能顺顺当当解决。
先搞懂:为啥会碰上8080端口被占的事儿
SpringBoot默认爱用8080当Tomcat的“门牌号”,要是这个门牌号早被别的程序“占了窝”,咱们的应用就进不去。常见原因就仨:
- 之前启动的SpringBoot应用没关干净,后台还偷偷占着8080;
- 电脑里装了其他用8080的服务,比如某些旧版数据库管理工具、调试助手;
- 自己或同事之前改过项目配置,把别的程序设成8080,忘了说。
一步步查:到底是谁抢了8080的“坑”
要解决问题,得先揪出占端口的“凶手”,不同系统招儿不一样:
- Windows系统:点左下角开始,搜“cmd”打开命令提示符,输netstat -ano | findstr :8080,回车后能看到一串数字,最后那串就是占端口的程序ID(PID);再输tasklist | findstr 进程ID(把“进程ID”换成刚才的数字),就能知道是哪个软件在占,比如“java.exe”就是之前的SpringBoot没关,“mysqld.exe”可能是数据库服务。
- Mac/Linux系统:打开终端,输lsof -i :8080,能直接看到占端口的程序名和PID;要是提示没装lsof,先输brew install lsof(Mac)或sudo apt-get install lsof(Linux)装上,再试就行。
对症解决:把占端口的“家伙”请走或换个门牌号
查清是谁占了,就能针对性处理,俩思路:要么把占端口的关掉,要么给咱们的应用换端口。
办法1:关掉占8080的程序
- 要是显示是之前没关的SpringBoot应用:Windows按
Ctrl+Shift+Esc开任务管理器,点“详细信息”,找到对应PID的“java.exe”,右键选“结束任务”;Mac点屏幕左上角苹果标→“强制退出”,找到对应的Java程序点“强制退出”。 - 要是其他软件(比如某调试工具):先看看这软件是不是必须的,不是就卸载或关掉自启动;是的话就得换端口(往下看办法2)。
办法2:给SpringBoot换个别的端口
不想折腾关程序,直接给应用换个“门牌号”更省心,SpringBoot改端口特简单:
- 临时改(单次管用):启动项目时,在IDE的运行配置里加参数--server.port=8081(数字随便换,只要没被占,比如8082、8090都行);
- 永久改(每次启动都用新端口):打开项目的application.properties文件(有的项目是application.yml),加一行server.port=8081,保存后再启动就不会抢8080了。
几个常被问的问题,一次说清楚
问:我关了占端口的程序,咋重启又占上了?
答:八成是那程序开了自启动,Windows点“任务管理器→启动”标签,把对应的程序禁用;Mac点“系统设置→通用→登录项”,把勾去掉。
问:换端口后,之前的前端页面会不会连不上?
答:会的!前端请求地址里的端口得跟着改,比如之前是http://localhost:8080/api/lesson5,换成8081就得改成http://localhost:8081/api/lesson5,不然前端找不到后端。
问:怎么提前避免再碰着这事儿?
答:启动时先看一眼端口有没有被占(用前面的查端口命令),或者干脆在项目里先把端口改成不常用的(比如8088),一劳永逸。
不同解决方式的对比,帮你选最顺手的
| 解决方式 | 操作难度 | 适用场景 | 注意点 |
|----------------|----------|------------------------------|--------------------------------------|
| 关闭占端口程序 | 简单 | 确定占端口的是无用/可关程序 | 别误关重要服务(比如数据库) |
| 临时改端口 | 超简单 | 偶尔启动一次,不想改配置 | 每次启动都要加参数,容易忘 |
| 永久改配置 | 简单 | 长期用这个项目 | 换了端口要同步改前端或其他关联配置 |
我踩过的坑:别让“小疏忽”耽误时间
我刚开始学SpringBoot做Lesson5时,也碰到过8080被占的情况,当时急着交作业,直接乱关程序,结果把正在运行的MySQL服务关了,导致数据库里的测试数据全没了,又得重新导数据,白费半小时。后来学乖了:先查清楚占端口的是啥,不重要的再关,重要的就换端口;而且改了端口一定记得到前端配置文件里改地址,不然对着报错发呆半天都不知道咋回事。
其实端口被占这事儿,就像去餐厅吃饭碰到座位被坐了——要么跟人家商量换个座位(关程序),要么干脆换家餐厅(换端口),关键是别慌,按步骤查就能搞定。SpringBoot本来就是为了让开发变简单,这点小麻烦捋顺了,后面做更复杂的案例就更顺手啦。
【分析完毕】

爱吃泡芙der小公主