一、问题描述
我们在使用 idea
的过程中,会发现在 services
中的服务窗口 不显示端口 了,如下所示:
这对于我们使用 idea 对 spring boot 项目进行调试的时候非常不方便,那么应该如何恢复呢?
二、问题分析
知其然,要知其所以然。
首先,我们可以看一下日志旁边的 actuator
标签是否有报错,如下所示:
failed to check application ready state: timeout exceeded
press refresh button to reinit state checking
看这个报错提示,是要我们点击右边的刷新按钮,可是点击后经过漫长的等待还是报错。
这个报错是因为 idea 和 springboot 项目没有在同一 jvm 环境下运行,使得 idea 不能连接到这个 attachprovider。那么如何才能让 idea 和 springboot 项目在同一 jvm 环境下运行呢?解决了这个问题,我们的端口就可以正常显示了。
三、解决方案
3.1 设置启动参数【生效】
我们可以在 idea 的启动配置中,为 springboot 项目增加下面4行 vm options 项:(端口不固定,不冲突即可)
-dcom.sun.management.jmxremote.port=3001
-dcom.sun.management.jmxremote.authenticate=false
-dcom.sun.management.jmxremote.ssl=false
-djava.rmi.server.hostname=localhost
经过小编尝试发现,上面的配置并不需要全部添加,只需要添加下面这一行即可:
-djava.rmi.server.hostname=localhost

配置好之后,我们再启动服务就可以看到端口号了:
那么对于微服务架构,这么多微服务,要一个一个设置吗?当然不用,我们可以在 idea 的 file
-> new projects setup
-> run configuration templates...
设置新项目的默认运行模板。

找到 spring boot
,在 modify options
中选择 add vm options
,然后输入如下内容,点击 ok:
-djava.rmi.server.hostname=localhost

这样我们就设置好了新项目的运行模板,然后我们去已有项目的文件夹下,删除 .idea
文件夹,然后重新打开,这样所有服务的启动配置都会被更新。
3.2 方法二:设置环境变量【不生效】
在电脑右键 -> 属性 -> 环境变量中,增加如下环境变量:
变量名:idea_jdk_64
然后 重启 idea,再启动项目,就可以发现项目上的端口已经可以正常显示了。
3.3 方法三:删除缓存【不生效】
将所有 java 程序关闭,然后将 c:\users\{username}\appdata\local\temp\hsperfdata_{username}
这个文件夹中的内容删掉,username代表操作系统的用户名。
四、补充:如何手动控制端口显示
首先,我们来看这个端口的显示是在 idea 的 设置
中进行控制的。
整理完毕,完结撒花~ 🌻
参考地址:
1.idea2022 run dashboard service服务不显示端口号解决方法,https://blog.csdn.net/weixin_39402877/article/details/130538232
2.idea 启动 springboot 项目出现 attachprovider for the vm is not found,https://blog.csdn.net/sakuyam/article/details/106947892
3.[idea]springboot项目failed to check application ready state问题,https://www.jianshu.com/p/591df1976dbf
发表评论