问题
SpringBoot 启动后 ,VS Code 报错 Failed to refresh live data from process ****
。
现场是,SpringBoot 项目启动时,VS Code 将进行如下刷新,图片如下所示
当刷新 10 次以后,如果还是失败,则会抛出如下错误。
注意: 该问题并不影响程序运行
分析
看到 IDE 报错,总是让人很不舒服,总想解决该问题。那么是 live data
,是什么导致刷新它失败呢?
live data
指正在运行 spring 进程中的数据,包括但不限于线程、bean 等实时信息。它的出现和 Spring 官方 IDE 相关。使用它,开发人员可以方便的观察 Spring 容器中的信息。原文如下:
The Spring Tools 4 can connect to running Spring processes to visualize internal information of those running Spring processes inline with your source code. This allows you to see, for example, which beans have bean created at runtime, how they are wired, and more.
The Spring Tools 4 shows hints by highlighting sections of source code with a light green background. Hovering over the highlights with the mouse pointer, data from the running app is displayed in a popup.
解决
上文引用的内容源自 Live-Application-Information ,其中也阐述到解决问题的方法:
For some types of information, Spring Tools 4 may also show a ‘quick summary’ as a codelens. Codelenses are supported in Eclipse, VS Code and Theia. For Eclipse this has to be enabled via Preferences >> Language Servers >> Spring Language Servers >> Spring Boot Language Server.
引文指出,Eclipse, VS Code 、Theia 等编辑器都支持该功能,同时给出了 Eclipse 管理 Live-Application-Information
功能的方法,即 Preferences >> Language Servers >> Spring Language Servers >> Spring Boot Language Server
。
VS Code 解决方案
根据 Live-Application-Information 介绍。VS Code 有两种方法可以解决 Failed to refresh live data from process ****
的问题。
1、引入依赖
Live information is scraped from running apps using JMX to connect to Spring Boot Actuator Endpoints. This means that must be added as a dependency to your application and enabled. The easiest way to accomplish this is to add the dependency to your application’s or as explained here.spring-boot-actuatorspring-boot-actuator-starterpom.xmlbuild.gradle
根据原文,可以引入依赖解决上述问题。依赖如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2、设置关闭 Live-information
相关设置
打开设置》搜索 live
,在扩展插件(Ectensions)中找到 Boot-Java Configuration
,将 Live-Information
选项去除勾选。步骤如下图所示:
注意!!! 上图中没有去除,应该去掉勾选!!!
总结
Failed to refresh live data from process ****
是由 Spring 扩展引起的,该问题并不影响程序的启动、运行,可以忽略不管。当然,该问题是可以解决的,Eclipse 可以使用官方给出的方法尝试,VS Code 可以使用本文提供的方法。 IDEA 或 其他 IDE 可以类比这些解决方案来解决。