解决方案一
先说第一个解决方案:
配置出现问题的 Springboot 项目启动参数 VM options 项
-Dcom.sun.management.jmxremote.port={some_port}
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=localhost
端口号是多少无所谓,理论上只要不被占用都行。我的理解是暴露出一个端口号让 IDEA 能够连接上 AttachProvider。
原文:
上面的方法已经可以解决问题了,但由于公司的项目是分布式的,每个子模块都需要配置这样的 VM 参数显得非常麻烦。然而在我询问这位 Support Engineer at JetBrains 出现这种状况的原因时,他给出了这样的答复:
原文:
参考:https://youtrack.jetbrains.com/issue/IDEA-210665
要感谢这位工程师的耐心解答,总之意思大体就是我的 IDEA 和 Springboot 项目没有在同一 JVM 环境下运行,使得 IDEA 不能连接到这个 AttachProvider。
那么反过来,只要让 IDEA 和项目共同运行在同一个 jdk 环境下是不是就可以不需要配置项目的 VM 参数了呢?所以:
另一个解决方案
关于 IDEA 修改 Jetbrains Runtime 方法参考:
http://www.voidcn.com/article/p-fkwgtmms-bvn.html
注意:IDEA 使用 Jetbrains Runtime 作为 JVM 环境,我尝试过使用 Oracle JDK 1.8作为 IDEA 的 JVM 环境,出现了很多例如插件无法正常运行或中文语言包乱码的情况。总之不是非常兼容。所以这里还是使用 intellij-jdk 作为 IDEA 和项目共用的 JVM 环境。
intellij-jdk 下载地址:
https://bintray.com/jetbrains/intellij-jdk/openjdk8-windows-x64#files
这里我选用的是 jbsdk8u202b1483.4_windows_x64.tar.gz
环境变量配置:
我是用 64 位的 IDEA,所以只配 64 位的环境变量。配置完成后重启 IDEA。
项目 JDK 配置(使用 Jetbrains-JDK):
此时的项目参数 VM options:
运行状态:
没有再报 AttachProvider for the vm is not found 了。