背景
记得1年前,当升级完idea社区版后,当重新关闭spring-boot运用后,再开启,就会出现如下错误:
***************************
APPLICATION FAILED TO START
***************************
Description:
Web server failed to start. Port 20030 was already in use.
Action:
Identify and stop the process that's listening on port 20030 or configure this application to listen on another port.
弄了半天设置,也没解决,当时以为是idea设的坑,故意不让用新的社区版了。从网上检索到的解决方案大多如下(我是在windows下开发的):
netstat -aon | findstr 20030
taskkill /PID [上面列出的进程号] /T /F
上述解决方案很麻烦。索性改用vscode进行代码调试了。最近在新的电脑里用最新版idea建新的spring-boot工程,启停spring-boot运用无上述错误,看来不是idea的问题。
解决方案描述
- 首先想到是否升级idea可解决,但问题存在
- 难道是工程组织的问题,遂经过对比和摸索,解决了困扰自己很久的问题。现在在idea里启停服务已经很正常了,下面列出解决步骤:
1)先将运用module从project里删除,同时将project从idea的project列表里删除,在一个新的空目录里新建一个project;
2)再依次将各运用的module导入进新的project里,此时再启停运用就无端口占用问题
分析原因:
当时出问题的project是在一个运用目录里建的,也就是project的文件目录.idea和运用module的文件混在一起,导致idea判断错误。一般我们开发java运用,尤其是微服务,会在一个project引入多个module。将项目project文件和运用module的文件分开,这种端口被占用的问题就没出现了。 假设你的代码在目录workspace下,应该这样来组织代码
workspace
├─prj-1 项目目录,在.idea目录存项目信息
├─ .idea
├─spring-boot-app-1 运用1目录
└─spring-boot-app-2 运用2目录
总结:问题解决看来就这么简单,继续用起idea 😃