找回IDEA调试时的Stop and Rerun提示框

问题描述

使用IDEA来调试SpringBoot应用时,程序运行中我们修改一些代码,然后需要重启应用查看效果,在这种场景下每次点击Debug图标(也就是那个绿色的小虫子按钮)重启服务时,会弹出一个提示框,提示你是否要停止当前的Web服务器运行,然后重新启动它。

这很好理解,不像一个main方法,Web应用通常都会监听一个固定的端口,比如8080,那么多次启动,必然会因为端口已绑定而失败。

为了操作,我们可以勾选那个“Do not show this dialog in the future”复选框来记住你的选择,这样以后只要点击Debug按钮就会自动停止应用并启动。

问题来了,那怎么恢复这个弹框呢?我找遍了IDEA上所有的设置项都没有找到这个功能,也尝试在不同的搜索引擎以及IDEA文档上找,但都查不到答案。

纠结这个问题,可能有部分强迫症的原因,但是真正困扰我的是那种一时需要担心因为误操作,但是无法纠正的“不安全感”。我是通过GUI让软件记住了我的选择,但是却不能再通过GUI将它修改回去。

一个偶然的机会,我发现当启动一个新的项目时,点击Debug按钮还是会弹出这个窗口的,这个现象说明了勾选“Do not show this dialog in the future”复选框的操作,只是作用于当前的项目,并不是全局的设置。

image-20201124103648422

问题定位

既然是项目级别的设置,就需要到项目目录中去找,在项目根目下有一个.idea目录,根据文件名推断workspace这个文件它可能就是,于是对比了两个不同的项目的.idea目录下的workspace文件后发现,没有弹窗的那个项目,多出一个restartRequiresConfirmation属性,这个属性名直译成“重启需要确认”,而值为false,也正说明是不需要确认的意思。

image-20201124105222771

定位路径

workspace.xml中根元素project下找到一个name属性为PropertiesComponent的component元素

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<component name="PropertiesComponent">
<property name="DatabaseDriversLRU" value="mysql" />
<property name="ExpandSpringBootJavaOptionsPanel" value="true" />
<property name="ExpandSpringBootSpringBootSettingsPanel" value="false" />
<property name="Git.Branch.Popup.ShowAllRemotes" value="true" />
<property name="RequestMappingsPanelOrder0" value="0" />
<property name="RequestMappingsPanelOrder1" value="1" />
<property name="RequestMappingsPanelWidth0" value="75" />
<property name="RequestMappingsPanelWidth1" value="75" />
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="aspect.path.notification.shown" value="true" />
<property name="com.intellij.ide.scratch.LRUPopupBuilder$1/New Scratch File" value="MySQL&#10;JAVA&#10;GitIgnore" />
<property name="dart.analysis.tool.window.visible" value="false" />
<property name="extract.method.default.visibility" value="private" />
<property name="full.screen.before.presentation.mode" value="false" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/server/src/main/java/com/cnpc/cmp/worksheet/util" />
<property name="restartRequiresConfirmation" value="false" />
<property name="settings.editor.selected.configurable" value="tasks.timeTracking" />
<property name="show.unlinked.gradle.project.popup" value="true" />
</component>

问题修复

删除掉这行,重启IDEA