IDEA实用技巧
目前最先进的代码工厂IDEA,开箱即用,非常强大。
# 1. 绿色版安装配置
- 下载:https://www.jetbrains.com/idea/
- 配置ipr.reg
将安装的IDEA关联起来,这里默认都是配置在C盘目录下的。
- 激活方式:这个将就搜索技巧
REGEDIT4
[HKEY_CLASSES_ROOT\.ipr]
@="IntelliJIDEAProjectFile"
[HKEY_CLASSES_ROOT\IntelliJIDEAProjectFile]
@="IntelliJ IDEA Project File"
[HKEY_CLASSES_ROOT\IntelliJIDEAProjectFile\DefaultIcon]
@="F:\\Tools\\IntelliJ IDEA\\bin\\idea.exe,0"
[HKEY_CLASSES_ROOT\IntelliJIDEAProjectFile\shell]
[HKEY_CLASSES_ROOT\IntelliJIDEAProjectFile\shell\open]
[HKEY_CLASSES_ROOT\IntelliJIDEAProjectFile\shell\open\command]
@="\"F:\\Tools\\IntelliJ IDEA\\bin\\idea.exe" \"%1\""
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- idea.properties (默认配置在C盘User目录中)配置(若使用默认配置可略)
# 配置信息
# 指定配置文件路径
idea.config.path=F:/Tools/IntelliJ IDEA/myConfig
# 系统配置路
idea.system.path=F:/Tools/IntelliJ IDEA/myConfig/system
# 自定义插件路径
idea.plugins.path=F:/Tools/IntelliJ IDEA/myConfig/plugins
# 指定平常使用日志的存储路
idea.log.path=F:/Tools/IntelliJ IDEA/myConfig/log
# 最大文件存储大小(应该是指代码帮助信息存储,这个数值越大,对硬件要求更高,更耗性能)
idea.max.intellisense.filesize=2500
# IDEA 可以打开文件大小
idea.max.content.load.filesize=20000
# 控制台输出缓冲大小,如需要禁用则配置 idea.cycle.buffer.size=disabled
idea.cycle.buffer.size=1024
# 配置在IDE中运行进程时是否应使用特殊启动器。使用Launcher启用“软退出”和“线程转储”功能 不懂啥意思
idea.no.launcher=false
# 避免太长的classpath
idea.dynamic.classpath=false
# IDEA调试使用 通常禁止使用中抛出ProcessCanceledException
#idea.ProcessCanceledException=disabled
# 此属性有两个可选值“heavy”和“medium”,好像同弹出菜单有关系
idea.popup.weight=heavy
# 不可删除次属性,若删除可能会导致windowsd端IDEA使用下降
sun.java2d.d3d=false
#设置swing.bufferPerWindow = false来解决JDK6中的慢速滚动问题(参见IDEA-35883),但这可能会导致JDK8性能下降,因为它会禁用双缓冲,这是消除blit加速滚动撕裂所必需的
恢复帧缓冲区内容,无需通常重新绘制,即使EDT被阻止。
swing.bufferPerWindow=true
# 删除此属性可能会导致X Window下的编辑器性能下降
sun.java2d.pmoffscreen=false
# 在JBRE中启用HiDPI支持
sun.java2d.uiScale.enabled=true
# swing组件缩放调整
javax.swing.rebaseCssSizeMap=true
#在Mac OS X下访问剪贴板时避免长时间挂起的解决方法。
#ide.mac.useNativeClipboard=True
# 最大大小(千字节)IDEA将加载以显示过去的文件内容
#idea.max.vcs.loaded.size.kb=20480
# IDEA文件选择器查看目录内部以检测它们是否包含有效项目(使用相应的图标标记此类目录)。取消注释该选项可防止用户主目录之外的此行为。
#idea.chooser.lookup.for.project.dirs=false
# 实验选项,可以做很多事情来实现真正平滑的滚动,具体查看按照目录解释
#idea.true.smooth.scrolling=true
# IDEA可以复制库.jar文件以防止其锁定。默认情况下,此行为在Windows上启用,在其他平台上禁用。取消注释此属性以覆盖。
# idea.jars.nocopy=false
# 用于在调试模式下启动JVM的VM选项值。一些JRE以不同的方式定义它(Oracle VM中的-XXdebug)
idea.xdebug.key=-Xdebug
# 如果要接收有关安装的IDE或插件发生的致命错误的即时可视通知,请更改为“已启用”。
idea.fatal.error.notification=disabled
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
- idea.exe.vmoptions配置 -Xms128m, 16 G 内存的机器可尝试设置为 -Xms512m (设置初始的内存数,增加该值可以提高 Java 程序的启动速度。 ) -Xmx750m, 16 G 内存的机器可尝试设置为 -Xmx1500m (设置最大内存数,提高该值,可以减少内存 Garage 收集的频率,提高程序性能) -XX:ReservedCodeCacheSize=240m, 16G 内存的机器可尝试设置为**-XX:ReservedCodeCacheSize=500m** (保留代码占用的内存容量)
# 1.1. 快捷键
# 1.1.1. 从 Windows 过度到 Mac 必备快捷键对照表
# 1.1.1.1. Mac 键盘符号说明
⌘
==Command
⇧
==Shift
⇪
==Caps Lock
⌥
==Option
⌃
==Control
↩
==Return/Enter
⌫
==Delete
⌦
==向前删除键(Fn+Delete)
↑
==上箭头
↓
==下箭头
←
==左箭头
→
==右箭头
⇞
==Page Up(Fn+↑)
⇟
==Page Down(Fn+↓)
Home
==Fn + ←
End
==Fn + →
⇥
==右制表符(Tab键)
⇤
==左制表符(Shift+Tab)
⎋
==Escape (Esc)
⏏
==电源开关键
# 1.1.1.2. Ctrl
Win 快捷键 | Mac 快捷键 | 介绍 |
---|---|---|
Ctrl + F | Command + F | 在当前文件进行文本查找 |
Ctrl + R | Command + R | 在当前文件进行文本替换 |
Ctrl + Z | Command + Z | 撤销 |
Ctrl + Y | Command + Delete | 删除光标所在行 或 删除选中的行 |
Ctrl + D | Command + D | 复制光标所在行 或 复制选择内容,并把复制内容插入光标位置下面 |
Ctrl + W | Option + 方向键上 | 递进式选择代码块。可选中光标所在的单词或段落,连续按会在原有选中的基础上再扩展选中范围 |
Ctrl + E | Command + E | 显示最近打开的文件记录列表 |
Ctrl + N | Command + O | 根据输入的 类名 查找类文件 |
Ctrl + J | Command + J | 插入自定义动态代码模板 |
Ctrl + P | Command + P | 方法参数提示显示 |
Ctrl + U | Command + U | 前往当前光标所在的方法的父类的方法 / 接口定义 |
Ctrl + B | Command + B | 进入光标所在的方法/变量的接口或是定义处,等效于 Ctrl + 左键单击 |
Ctrl + / | Command + / | 注释光标所在行代码,会根据当前不同文件类型使用不同的注释符号 |
Ctrl + F1 | Command + F1 | 在光标所在的错误代码处显示错误信息 |
Ctrl + F11 | Option + F3 | 选中文件 / 文件夹,使用助记符设定 / 取消书签 |
Ctrl + F12 | Command + F12 | 弹出当前文件结构层,可以在弹出的层上直接输入,进行筛选 |
Ctrl + Space | Control + Space | 基础代码补全,默认在 Windows 系统上被输入法占用,需要进行修改,建议修改为 Ctrl + 逗号 |
Ctrl + Delete | Option + Fn+ Delete | 删除光标后面的单词或是中文句 |
Ctrl + BackSpace | Option + Delete | 删除光标前面的单词或是中文句 |
Ctrl + 1,2,3...9 | Control + 1,2,3...9 | 定位到对应数值的书签位置 |
Ctrl + 加号 | Command + 加号 | 展开代码 |
Ctrl + 减号 | Command + 减号 | 折叠代码 |
Ctrl + 左键单击 | Control + 左键单击 | 在打开的文件标题上,弹出该文件路径 |
Ctrl + 左方向键 | Option + 左方向键 | 光标跳转到当前单词 / 中文句的左侧开头位置 |
Ctrl + 右方向键 | Option + 右方向键 | 光标跳转到当前单词 / 中文句的右侧开头位置 |
Ctrl + 前方向键 | 预设中没有该快捷键 | 等效于鼠标滚轮向前效果 |
Ctrl + 后方向键 | 预设中没有该快捷键 | 等效于鼠标滚轮向后效果 |
# 1.1.1.3. Alt
Win 快捷键 | Mac 快捷键 | 介绍 |
---|---|---|
Alt + ` | Control + V | 显示版本控制常用操作菜单弹出层 |
Alt + F1 | Option + F1 | 显示当前文件选择目标弹出层,弹出层中有很多目标可以进行选择 |
Alt + F7 | Option + F7 | 查询所选对象/变量被引用 |
Alt + Enter | Option + Enter | IntelliJ IDEA 根据光标所在问题,提供快速修复选择,光标放在的位置不同提示的结果也不同 |
Alt + Insert | Command + N | 代码自动生成,如生成对象的 set / get 方法,构造函数,toString() 等 |
Alt + 左方向键 | Control + 左方向键 | 切换当前已打开的窗口中的子视图,比如Debug窗口中有Output、Debugger等子视图,用此快捷键就可以在子视图中切换 |
Alt + 右方向键 | Control + 右方向键 | 切换当前已打开的窗口中的子视图,比如Debug窗口中有Output、Debugger等子视图,用此快捷键就可以在子视图中切换 |
Alt + 前方向键 | Control + 前方向键 | 当前光标跳转到当前文件的前一个方法名位置 |
Alt + 后方向键 | Control + 后方向键 | 当前光标跳转到当前文件的后一个方法名位置 |
Alt + 1,2,3...9 | Command + 1,2,3...9 | 显示对应数值的选项卡,其中 1 是 Project 用得最多 |
# 1.1.1.4. Shift
Win 快捷键 | Mac 快捷键 | 介绍 |
---|---|---|
Shift + F11 | Command + F3 | 弹出书签显示层 |
Shift + Tab | Shift + Tab | 取消缩进 |
Shift + Enter | Shift + Enter | 开始新一行。光标所在行下空出一行,光标定位到新行位置 |
Shift + 左键单击 | Shift + 左键单击 | 在打开的文件名上按此快捷键,可以关闭当前打开文件 |
# 1.1.1.5. Ctrl + Alt
Win 快捷键 | Mac 快捷键 | 介绍 |
---|---|---|
Ctrl + Alt + L | Command + Option + L | 格式化代码,可以对当前文件和整个包目录使用 |
Ctrl + Alt + O | Control + Option + O | 优化导入的类,可以对当前文件和整个包目录使用 |
Ctrl + Alt + T | Command + Option + T | 对选中的代码弹出环绕选项弹出层 |
Ctrl + Alt + S | Command + 逗号 | 打开 IntelliJ IDEA 系统设置 |
Ctrl + Alt + Enter | Command + Option + Enter | 光标所在行上空出一行,光标定位到新行 |
Ctrl + Alt + 左方向键 | Command + Option + 左方向键 | 退回到上一个操作的地方 |
Ctrl + Alt + 右方向键 | Command + Option + 右方向键 | 前进到上一个操作的地方 |
# 1.1.1.6. Ctrl + Shift
Win 快捷键 | Mac 快捷键 | 介绍 |
---|---|---|
Ctrl + Shift + F | Command + Shift + F | 根据输入内容查找整个项目 或 指定目录内文件 |
Ctrl + Shift + R | Command + Shift + R | 根据输入内容替换对应内容,范围为整个项目 或 指定目录内文件 |
Ctrl + Shift + J | Control + Shift + J | 自动将下一行合并到当前行末尾 |
Ctrl + Shift + Z | Command + Shift + Z | 取消撤销 |
Ctrl + Shift + W | Option + 方向键下 | 递进式取消选择代码块。可选中光标所在的单词或段落,连续按会在原有选中的基础上再扩展取消选中范围 |
Ctrl + Shift + N | Command + Shift + O | 通过文件名定位 / 打开文件 / 目录,打开目录需要在输入的内容后面多加一个正斜杠 |
Ctrl + Shift + U | Command + Shift + U | 对选中的代码进行大 / 小写轮流转换 |
Ctrl + Shift + T | Command + Shift + T | 对当前类生成单元测试类,如果已经存在的单元测试类则可以进行选择 |
Ctrl + Shift + C | Command + Shift + C | 复制当前文件磁盘路径到剪贴板 |
Ctrl + Shift + B | Control + Shift + B | 跳转到类型声明处 |
Ctrl + Shift + / | Command + Option + / | 代码块注释 |
Ctrl + Shift + [ | Command + Shift + [ | 选中从光标所在位置到它的顶部中括号位置 |
Ctrl + Shift + ] | Command + Shift + ] | 选中从光标所在位置到它的底部中括号位置 |
Ctrl + Shift + 加号 | Command + Shift + 加号 | 展开所有代码 |
Ctrl + Shift + 减号 | Command + Shift + 减号 | 折叠所有代码 |
Ctrl + Shift + F7 | Command + Shift + F7 | 高亮显示所有该选中文本,按Esc高亮消失 |
Ctrl + Shift + F12 | Command + Shift + F12 | 编辑器最大化 |
Ctrl + Shift + Enter | Command + Shift + Enter | 自动结束代码,行末自动添加分号 |
Ctrl + Shift + Backspace | Ctrl + Shift + Backspace | 退回到上次修改的地方 |
Ctrl + Shift + 1,2,3...9 | Control + Shift + 1,2,3...9 | 快速添加指定数值的书签 |
Ctrl + Shift + 左键单击 | Command + Shift + 左键单击 | 把光标放在某个类变量上,按此快捷键可以直接定位到该类中 |
Ctrl + Shift + 左方向键 | Option + Shift + 左方向键 | 在代码文件上,光标跳转到当前单词 / 中文句的左侧开头位置,同时选中该单词 / 中文句 |
Ctrl + Shift + 右方向键 | Option + Shift + 右方向键 | 在代码文件上,光标跳转到当前单词 / 中文句的右侧开头位置,同时选中该单词 / 中文句 |
Ctrl + Shift + 前方向键 | Command + Shift + 前方向键 | 光标放在方法名上,将方法移动到上一个方法前面,调整方法排序 |
Ctrl + Shift + 后方向键 | Command + Shift + 后方向键 | 光标放在方法名上,将方法移动到下一个方法前面,调整方法排序 |
# 1.1.1.7. Alt + Shift
Win 快捷键 | Mac 快捷键 | 介绍 |
---|---|---|
Alt + Shift + N | Option + Shift + B | 选择 / 添加 task |
Alt + Shift + 左键双击 | Option + Shift + 左键双击 | 选择被双击的单词 / 中文句,按住不放,可以同时选择其他单词 / 中文句 |
Alt + Shift + 前方向键 | Option + Shift + 前方向键 | 移动光标所在行向上移动 |
Alt + Shift + 后方向键 | Option + Shift + 后方向键 | 移动光标所在行向下移动 |
# 1.1.1.8. Ctrl + Shift + Alt
Win 快捷键 | Mac 快捷键 | 介绍 |
---|---|---|
Ctrl + Shift + Alt + V | Command + Shift + Option + V | 无格式黏贴 |
Ctrl + Shift + Alt + S | Command + ; | 打开当前项目设置 |
# 1.1.1.9. 其他
Win 快捷键 | Mac 快捷键 | 介绍 |
---|---|---|
F2 | F2 | 跳转到下一个高亮错误 或 警告位置 |
F4 | F4 | 编辑源 |
F11 | F3 | 添加书签 |
F12 | F12 | 回到前一个工具窗口 |
Tab | Tab | 缩进 |
ESC | ESC | 从工具窗口进入代码文件窗口 |
# 1.2. postfix(系统默认)
# 定义非表达式
b!——> !b
# 定义方法参数
o.arg——>(o)
# 断言
value.assert——>assert value
# 强转类型
o.cast——>((强转类型)o)
# if非判断
b.else ——> if (!b) {}
# if判断
b.if ——> if (b) {}
# 抽取变量
b.feild——>
private boolean b;
void m(boolean b) {
this.b = b;
}
# 根据数组值生成遍历foreach方法
int[] values = {1, 2, 3};
values.for
或者
values.iter
——>
int[] values = {1, 2, 3};
for (int value : values) {
}
# 根据for循环遍历值生成遍历方法i++
int foo = 100;
foo.fori ——>
int foo = 100;
for (int i = 0; i < foo; i++) {
}
# 根据for循环遍历值生成遍历方法i--
int foo = 100;
foo.forr ——>
int foo = 100;
for (int i = foo; i > 0; i--) {
}
# 类型判断生成三目表达式(强制转换)
o.inst——> o instanceof ? (() o) : null;
o.instanceof——> o instanceof ? (() o) : null;
# 生成lamba表达式
foo().lambda——>() -> foo()
# if判断对象不可以为空
o.nn或o.notnull——> if (o != null){ }
# if判断为空
o.null——>if (o = null){ }
# boolean 非
m(b.not)——> m(!b)
# 同步代码块
o.synchronized——>synchronized (o) { }
# 抛出异常对象
new RuntimeException("error").throw——>throw new RuntimeException("error");
# 生成异常try获取块
m().try——>
try {
m();
} catch(CheckedException e) {
e.printStackTrace();
}
# 创建异常,流自动释放(支持jdk7)
getStream().twr——>
try (AutoCloseable stream = getStream()) {
} catch (Exception e) {
}
# 类型判断
o instanceof String.var——>boolean foo = o instanceof String;
# 生成while
x.while——>while (x) {}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# 1.3. live template
idea 模板,快捷生成代码,常用技巧
- 添加mavn依赖
dep——>
<dependency>
<groupId>$GROUP$</groupId>
<artifactId>$ARTIFACT$</artifactId>
<version>$VERSION$</version>
</dependency>
pl——>
<plugin>
<groupId>$GROUP$</groupId>
<artifactId>$ARTIFACT$</artifactId>
<version>$VERSION$</version>
</plugin>
repo——>
<repository>
<id>$ID$</id>
<name>$NAME$</name>
<url>$URL$</url>
</repository>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- xml中特殊字符转译
CD——>
<![CDATA[
$SELECTION$
]]>
2
3
4
3.创建sql
col:
$col$ $type$ $null$$END$
ins:
insert into $table$ ($columns$) values ($END$);
sel:
select * from $table$$END$;
selc:
select count(*) from $table$ $alias$ where $alias$.$END$;
selw:
select * from $table$ $alias$ where $alias$.$END$;
tab:
create table $table$ (
$col$ $type$ $null$$END$
);
upd:
update $table_name$ set $col$ = $value$ where $END$;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
4.其他
prsf:private static final
psf:public static final
psfi:public static final int
psfs:public static final String
St:String
thr:throw new
serr:System.err.println($END$);
souf:System.out.printf("$END$");
sout:System.out.println($END$);
soutm:System.out.println("$CLASS_NAME$.$METHOD_NAME$");
soutp:System.out.println($FORMAT$);
soutv:System.out.println("$EXPR_COPY$ = " + $EXPR$);
2
3
4
5
6
7
8
9
10
11
12
geti:
public static $CLASS_NAME$ getInstance() {
return $VALUE$;
}
ifn:
if ($VAR$ == null) {
$END$
}
inn:
if ($VAR$ != null) {
$END$
}
inst:
if ($EXPR$ instanceof $TYPE$) {
$TYPE$ $VAR1$ = ($TYPE$)$EXPR$;
$END$
}
lazy:
if ($VAR$ == null) {
$VAR$ = new $TYPE$($END$);
}
mn:
$VAR$ = Math.min($VAR$, $END$);
mx:
$VAR$ = Math.max($VAR$, $END$);
psvm:
public static void main(String[] args){
$END$
}
lst:
$ARRAY$[$ARRAY$.length - 1]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 1.4. live template 与postfix 的区别
Live Templates 可以自定义,而 Postfix Completion 不可以。 同时,有些操作二者都提供了模板, 据说Postfix Templates 较 Live Templates 能快 0.01 秒
# 1.5. 文档注释预定义变量
${PACKAGE_NAME} - the name of the target package where the new class or interface will be created.
${PROJECT_NAME} - the name of the current project.
${FILE_NAME} - the name of the PHP file that will be created.
${NAME} - the name of the new file which you specify in the New File dialog box during the file creation.
${USER} - the login name of the current user.
${DATE} - the current system date.
${TIME} - the current system time.
${YEAR} - the current year.
${MONTH} - the current month.
${DAY} - the current day of the month.
${HOUR} - the current hour.
${MINUTE} - the current minute.
${PRODUCT_NAME} - the name of the IDE in which the file will be created.
${MONTH_NAME_SHORT} - the first 3 letters of the month name. Example: Jan, Feb, etc.
${MONTH_NAME_FULL} - full name of a month. Example: January, February, etc.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 1.6. 版本控制
- 很多人认为 IntelliJ IDEA 自带了 SVN 或是 Git 等版本控制工具,认为只要安装了 IntelliJ IDEA 就可以完全使用版本控制应有的功能。这完全是一种错误的解读, IntelliJ IDEA 是自带对这些版本控制工具的插件支持,但是该装什么版本控制客户端还是要照样装的。
- IntelliJ IDEA 对版本控制的支持是以插件化的方式来实现的。旗舰版默认支持目前主流的版本控制软件: CVS、 Subversion(SVN)、 Git、 Mercurial、Perforce、TFS。又因为目前太多人使用 Github 进行协同或是项目版本管理,所以 IntelliJ IDEA 同时自带了 Github 插件,方便 Checkout 和管理你的Github 项目。
- 在实际开发中,发现在 IDEA 中使用 SVN 的经历不算愉快,经常会遇到很多问题,比如紧急情况下 IDEA 无法更新、提交等。所以这里,谈下在 IDEA中使用 Git。
# 1.7. 必备插件
- IdeaVim Vim插件,但是跟IDEA兼容不是很好. https://plugins.jetbrains.com/plugin/164-ideavim (opens new window)
- AceJump 脱离鼠标,快速跳转 https://plugins.jetbrains.com/plugin/7086-acejump (opens new window)
- Lombok Lombok插件,提供getter/setter支持 https://plugins.jetbrains.com/plugin/6317-lombok-plugin (opens new window)
- MybatisX 源码 Mybatis plus 支持插件,当然其他mybatis环境也可以使用很方便 https://mp.baomidou.com/#/mybatisx-idea-plugin (opens new window)
源码 https://gitee.com/baomidou/MybatisX (opens new window) 5. FindBugs bug检查工具 https://plugins.jetbrains.com/plugin/3847-findbugs-idea (opens new window) 6. Key Promoter X 一个快捷键提示工具,它能够很好的辅助工作提高开发效率 https://plugins.jetbrains.com/plugin/index?xmlId=Key%20Promoter%20X (opens new window) 7. mutil-markdown 多功能markdown管理工具,虽然是收费但是可以破解,破解详见https://www.jianshu.com/p/a0550f81cbd1 (opens new window)
- 修改LisenceAgent.java源文件重新编译替换集合,修改内容如下:
getLicenseExpires()// 删除方法体,直接返回过期时间字符串
getLicenseCode() // 设置最后一样return 返回true
isValidLicense() // 删除方法体,设置 return true;
isValidActivation() // 删除方法体,设置 return true;
getLicenseType() // 删除方法体,设置return "License" 或 return "license";
getLicenseExpiringIn() // 删除方法体,设置 return 36000;(单位是天)
isActivationExpired() // 删除方法体,设置return false;
getActivatedOn// 激活日期,设置 return "你的激活日期";
2
3
4
5
6
7
8
注意: 编译时注意包名要一样
# 2. IDEA 中SpringBoot项目无法开启Dashboard问题
# 3. 配置启动器
- 首先找到项目中.idea文件下的workspace.xml开打
- 接下来找到<component name="RunDashboard">
<component name="RunDashboard">
<option name="ruleStates">
<list>
<RuleState>
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
</RuleState>
<RuleState>
<option name="name" value="StatusDashboardGroupingRule" />
</RuleState>
</list>
</option>
</component>
2
3
4
5
6
7
8
9
10
11
12
- 加入如下代码:
<component name="RunDashboard">
<!--配置RunDashboard 启动器-->
<option name="configurationTypes">
<set>
<option value="SpringBootApplicationConfigurationType" />
</set>
</option>
<option name="ruleStates">
<list>
<RuleState>
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
</RuleState>
<RuleState>
<option name="name" value="StatusDashboardGroupingRule" />
</RuleState>
</list>
</option>
</component>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 4. IDEA在Win10 情况下外接高分屏幕时,当扩展屏直接拔出,没有将IDEA窗口拽会主屏幕,则无法打开解决
- 项目下workspace.xml 找到ProjectFrameBounds 并删除 <option name="x" value="173" /> 标签即可
# 5. JavaAttachDebuggerProvider InternalError
idea 运行项目或则maven编译项目时,通过日志查看InternalError
解决方法双击Shift 搜索 Registry ---> 关闭 debugger.attach.toprocess.action
官方issue:https://youtrack.jetbrains.com/issue/IDEA-203172
ach.JavaAttachDebuggerProvider - Remote thread failed for unknown reason (-1073741819)
java.lang.InternalError: Remote thread failed for unknown reason (-1073741819)
at jdk.attach/sun.tools.attach.VirtualMachineImpl.enqueue(Native Method)
at jdk.attach/sun.tools.attach.VirtualMachineImpl.<init>(VirtualMachineImpl.java:62)
at jdk.attach/sun.tools.attach.AttachProviderImpl.attachVirtualMachine(AttachProviderImpl.java:69)
at jdk.attach/com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:207)
at com.intellij.debugger.impl.attach.JavaDebuggerAttachUtil.attachVirtualMachine(JavaDebuggerAttachUtil.java:45)
at com.intellij.debugger.impl.attach.JavaAttachDebuggerProvider.getProcessAttachInfoInt(JavaAttachDebuggerProvider.java:234)
at com.intellij.debugger.impl.attach.JavaAttachDebuggerProvider.lambda$getProcessAttachInfo$1(JavaAttachDebuggerProvider.java:210)
at com.intellij.openapi.application.impl.ApplicationImpl$1.call(ApplicationImpl.java:265)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
at java.base/java.lang.Thread.run(Thread.java:834)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19