XxxWebApplication: Failed to retrieve application JMX service URL
解决IDEA报错:无法检索应用程序 JMX 服务 URL[Failed to retrieve application JMX service URL]亲测可用
报错如图(中文报错【无法检索应用程序 JMX 服务 URL】图找不到了,就不发了):
错误信息图
这个问题困扰了我很久,全网搜索大多数是两个答案:1是取消勾选Enable JMX Agent,但这样的话是治标不治本啊,项目启动时是没有了报错信息,但是Endpoints 面板也会消失,这样就看不到接口和Bean的提示了(纯属掩耳盗铃,启动报错并不是消失了只是不显示了);2是在Spring Boot运行配置的VM选项中添加以下内容:
-Dcom.sun.management.jmxremote.port={some_port}
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
虽然这样是从根本上解决了问题,即使不取消勾选Enable JMX Agent启动项目也不会报错,但是问题在于,每个服务都要指定一个唯一的端口,且不能和项目启动端口一样,否则会端口冲突,这样的话需要单独记录端口使用情况,如果项目太多很耗精力。
不甘心的我最后在youtrack上找到了答案,最后亲测可用
附上原文链接,以下解决办法是我理解翻译过来的,供大家参考。
解决办法
- 首先关闭intellij idea;
- 打开任务管理器,点击详细信息,关闭所有与java和idea相关的进程;
- 在任务管理器中点击用户,看一下用户名称;
- 在文件资源管理器地址栏输入这个地址“C:\Users\STIG\AppData\Local\Temp”;
- 在此目录中找到这个文件夹“hsperfdata_XXX”(XXX代表你的系统登录的用户名,必须与任务管理器中的用户名一致且区分大小写,)删掉;
- 删掉后重新打开idea,启动项目就会发现项目可以显示端口号,无报错
方向二:
这个问题可能是由于JMX代理设置不正确或端口冲突导致的。你可以尝试以下几种方法来解决:
取消勾选Enable JMX Agent选项,这样可以避免报错信息,但是也会失去Endpoints面板的功能1。
在Spring Boot运行配置的VM选项中添加以下内容: -Dcom.sun.management.jmxremote.port={some_port} -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false,这样可以指定一个唯一的JMX端口,但是需要注意避免和其他项目或服务的端口冲突1。
关闭IDEA和所有与java和IDEA相关的进程,然后删除C:\Users\STIG\AppData\Local\Temp\hsperfdata_XXX文件夹(XXX代表你的系统登录的用户名),这样可以清除JMX缓存,然后重新打开IDEA和项目2。
已收到消息. 这个问题可能是由于JMX代理设置不正确或端口冲突导致的。你可以尝试以下几种方法来解决: - 取消勾选Enable JMX Agent选项,这样可以避免报错信息,但是也会失去Endpoints面板的功能。 - 在Spring Boot运行配置的VM选项中添加以下内容:
-Dcom.sun.management.jmxremote.port={some_port} -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
这样可以指定一个唯一的JMX端口,但是需要注意避免和其他项目或服务的端口冲突。 - 关闭IDEA和所有与java和IDEA相关的进程,然后删除C:\Users\STIG\AppData\Local\Temp\hsperfdata_XXX文件夹(XXX代表你的系统登录的用户名),这样可以清除JMX缓存,然后重新打开IDEA和项目。
方向三:
在IDEA里面修改JMX代理的设置。具体步骤如下:
打开IDEA,选择Run -> Edit Configurations
在左侧栏中选择你的Spring Boot项目,然后在右侧栏中找到Spring Boot选项卡
如果你想取消勾选Enable JMX Agent选项,就直接点击它,然后点击Apply和OK
如果你想在VM选项中添加JMX端口的参数,就在VM options栏中输入-Dcom.sun.management.jmxremote.port={some_port} -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false,其中{some_port}是你想指定的端口号,然后点击Apply和OK
方向四(idea 2023.1)
可以 直接快捷键 ALT+X
禁用 JMX
结语
如果这篇文章对您有所帮助,或者有所启发的话,求一键三连:点赞、评论、收藏➕关注,您的支持是我坚持写作最大的动力。