如何在Eclipse中正确重启Spring Boot应用?解决端口占用问题
解决Eclipse中Spring Boot重启端口被占用的问题
兄弟,你说的这个情况我太熟了!每次手动杀进程完全不是常规操作,Eclipse默认应该帮你处理旧实例的,大概率是你没开对配置,或者有些小bug在搞鬼。给你几个靠谱的解决办法:
- 开启自动终止旧实例配置
这是最直接的解决方案,很多刚用Eclipse跑Spring Boot的人都会忽略这个设置:
- 点击顶部菜单栏的
Run->Run Configurations - 在左侧列表找到你的Spring Boot应用配置(一般在
Spring Boot分类下) - 切换到
Spring Boot标签页 - 勾选
Terminate and restart before launching选项
下次再启动应用时,Eclipse会自动先关掉之前运行的实例,就不会出现端口占用的问题了。
- 检查残留进程并手动终止
有时候即使你点了控制台的停止按钮,进程可能没完全退出,这时候可以去Debug视图看看:
- 打开Eclipse的
Debug视图(如果没显示,点击Window->Show View->Debug) - 在视图里找到之前运行的Spring Boot进程,右键选择
Terminate或者Terminate All
这个比用命令行杀进程要方便得多。
- 临时方案:使用随机端口
如果你暂时不想折腾配置,可以让Spring Boot每次启动用随机端口,避免冲突:
在application.properties里添加:
server.port=0
或者在application.yml里:
server: port: 0
不过这个方案适合测试阶段,如果你需要固定8000端口的话,还是优先用第一个方法。
- 排查Eclipse或Workspace问题
如果上面的方法都没用,可能是Eclipse本身的小bug或者Workspace的问题: - 尝试清理Workspace:点击
Project->Clean,选择你的项目清理一下 - 更新Eclipse到最新版本,或者检查有没有冲突的插件(比如某些Spring相关插件版本不兼容)
- 实在不行可以试试重新导入项目到Workspace
另外,你现在用的lsof -i:8000然后杀进程确实是应急手段,但绝对不是常规操作,搞定上面的配置后就不用再这么麻烦了。
内容的提问来源于stack exchange,提问作者Arnie Schwarzvogel
相关产品推荐
相关产品推荐

