以下所有的操作都只对开发工具IntelliJ IDEA有效
问题描述
新建SpringBoot项目或者maven项目,导入spring-boot-starter-parent
的RELEASE版本时pom.xml
爆红
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.8.RELEASE</version>
<relativePath/>
</parent>
异常实况
原因分析
在maven日常使用正常的情况下[即仓库地址正确],极大可能是IDEA自身的原因;
IDEA默认会缓存父依赖项信息,当引入新的本地仓库不存在的父依赖版本时,就会报错:表示找不到依赖申明,而我们引用本地仓库已存在的依赖版本并不会报错。解决思路是点击Invalidate Caches/Restart
清理一下idea缓存
解决方法
点击File
--Invalidate Caches
--Invalidate and Restart
示例:
解决效果
问题描述
项目构建时构建失败并在Build面板报错java: 错误: 无效的源发行版:17,此时项目过不了编译,项目无法启动
异常实况
原因分析
没有保证使用正确且唯一的JDK版本来编译整个项目
解决方法
依次检查以下几处预设使用的JDK版本
第一处
第二处
第三处
第四处
第五处
第六处
清除target
目录并重新编译
解决效果
以下所有快捷代码输入后需要配合Enter键使用
psvm
功能:生成main方法
sout
功能:生成控制台换行打印方法
补充说明:
输入字符串变量.sout
回车会生成语句System.out.println(字符串变量)
表达式.var
功能:定义声明对应返回值类型的变量并用该变量接收表达式的返回值并生成对应的Java语句
表达式.return
功能:将表达式作为方法的返回结果生成return
语句
表达式.notnull
功能:生成判断表达式不为null
的if
条件语句,满足表达式不为null
的情况下执行if
代码块
逻辑表达式.while
功能:生成while
语句块,当逻辑表达式为true时执行while循环体
逻辑表达式.if
功能:生成if语句块,当逻辑表达式为true时执行if代码块
简单操作
当光标移动到项目的文件目录上并选中一个目录或文件后
使用上移或者下移快捷键能切换被选中的目录或文件
使用Enter键能展开或收起目录
按键Esc可以退出任何当前窗口
双击鼠标左键选中一个词,连续三次点击鼠标左键选中一行
通过拖拽页面的顶部页面选项卡,可以设置页面左右或者上下同一个窗口多页面显示
文件管理、项目管理等方面
快捷键 | 功能 | 选项卡 |
---|---|---|
Ctrl+F9 | 重新编译整个项目 | Build--Build Project |
Ctrl+Shift+F9 | 重新编译当前页面XXX资源 | Recompile XXX |
Alt+8 | 调出services面板 |
快捷键 | 功能 |
---|---|
Ctrl+Alt+左右箭头 | IDEA页面跳转到上或下一个光标停留位置,该快捷键会被QQ音乐切歌快捷键阻塞 |
Alt+左右箭头 | 跳转相邻左边或右边文件窗口 |
Ctrl+Shift+上下箭头 | 单行代码和上一行或者下一行交换位置 属性和方法直接带着注解注释上移一行或者下移一行,碰到方法或者属性时与其整体交换上下位置 |
Alt+上下箭头 | 光标跳转到当前类当前光标位置的上一个或下一个方法名 |
Shift+Alt+上下箭头 | 仅光标所在行上下移动一行 |
Ctrl+Y | 删除光标所在行 |
Ctrl+D | 复制当前行到下一行 |
Crtl+Shift+F12 | 展开或收起Project左侧边栏 |
Alt+Insert | 在弹出窗口选择生成固定方法/构造方法 |
Crtl+Shift+F10 | 运行当前Java类中的主方法 |
Ctrl+P | 显示光标选中方法所有重载方法和对应参数列表 |
Alt+Enter | 该快捷键是IDEA中的万能快捷键,能根据语境提示可选操作[1] |
双击Shift | 弹出全局搜索框对项目下的所有文件进行搜索 |
Ctrl+N | 弹出全局搜索框对项目下的所有类或者接口文件进行搜索 |
Crtl+F12 | 弹窗显示当前类的所有属性和方法,输入字符能搜索同名方法或者属性 |
Crtl+Shift+/ | 在光标处生成多行注释 |
Ctrl+/ | 在光标处生成单行注释 |
Crtl+Alt+B | 接口或抽象类上使用该快捷键在弹出列表显示其所有的实现类,只一个实现类会直接跳转 方法上使用该快捷键可以查看一个抽象方法的全部子类实现 Ctrl+Alt+鼠标左键效果相同 方法还可以通过选中方法--鼠标右键--go to--Implementation达到相同的效果 |
F4 | 跳转到选中变量、类、方法对应的声明定义位置 |
Crtl+B | 跳转到选中变量、类、方法对应的声明定义位置 在对应定义位置使用该快捷键显示所有被使用位置列表 |
Ctrl+鼠标左键 | 跳转到选中变量、类、方法对应的声明定义位置 在对应定义位置使用该快捷键显示所有被使用位置列表 |
Shift+F6 | 修改包名、类名、变量名、方法名、文件名等等并同步到项目中被使用到的所有地方 |
Crtl+Alt+L | 调整代码格式 |
Tab | 缩进 |
Shift+Tab | 取消缩进 |
Shift+鼠标滚轮 | 左右拖动当前窗口,相当于左右移动窗口下方进度条 |
Ctrl+O | 弹窗选择当前所在类要重写的方法 |
Ctrl+X | 剪切文本 |
Ctrl+L/Ctrl+F | 检索当前窗口内容 |
Ctrl+Shift+U | 转换字母大小写,注意是将任意字符串中的所有字母全部转换为大写或者小写 |
Crtl+Alt+U | 以弹窗的形式用UML类图展现当前类的所有父类和实现的接口 |
Crtl+Alt+Shift+U | 以新建窗口的形式用UML类图展现当前类的所有父类和实现的接口, 在 Pom.xml 中使用以分析依赖树的形式展示项目的依赖关系当前窗口鼠标右键--Diagrams效果是一样的 |
Ctrl+H | 以右侧边栏树形列表的形式展示当前类的类继承结构图,包含所有父类和子类,不包含实现接口 |
Ctrl+Shift+R | 弹出整个项目的全局搜索替换窗口 |
Crtl+Alt+T | 在弹窗列表中选择包围选中代码块的Java语句 |
Alt+鼠标左键/按住鼠标滚轮 | 多行编辑 |
Ctrl+Z | 撤销当前操作 |
Ctrl+Shift+Z | 恢复上次被撤销的操作,该快捷键会被搜狗输入法的快捷键阻塞 |
Ctrl+C | 可以选中文本复制,也可以直接复制光标所在行 |
Alt+7 | 调出类结构左侧边栏,该侧边栏常驻显示一个类中的所有属性和方法 点击IDEA左下角的Structure也能达到相同的效果 |
Shift+Enter | 在光标所在行的下面增加一行,光标移动到下一行的行首 |
Ctrl+Shift+F | 弹出全局检索窗口在整个项目的文件中搜索指定文本内容 |
Ctrl+Enter | 在光标下面添加一行空白行 |
Crtl+Alt+Shift+/ | 打开Maintenance菜单,这个菜单里面的设置在IDEA的使用中可能会涉及 |
Ctrl+I | 接口的实现类创建好后需要重写其中的抽象方法,该快捷键可以选择接口中的方法进行实现 实际上和万能快捷键重写接口抽象方法的效果是一样的 |
Ctrl+Shift+V | IDEA中剪切或者拷贝的代码历史记录,选中可以粘贴历史记录到光标处 |
Ctrl+Q | 能查看一个方法的API文档,需要下载源码才能看,和鼠标在方法上悬停效果是一样的 |
Alt+F7 | 选中方法使用该快捷键可以在Find面板中查看该方法在哪些地方被使用过 该快捷键会被英伟达的GeForce Experience的快捷键阻塞 选中方法鼠标右键--Find Usages也能弹出对应方法的Find面板 IDEA的底部可以直接打开Find面板,但是不能随着选中方法实时变化,仍需要该快捷键触发 |
Crtl+Alt+Shift+C | 复制一个类的全限定类名 选中类名--鼠标右键--Copy Reference也能达到相同的效果 |
Ctrl+\ | 使用预设模板为类、方法、属性生成注释 |
Ctrl+Alt+M | 将代码块抽取成一个方法,并在抽取位置通过方法名来调用 被MindManager的启动快捷键阻塞,修改了快捷方式快捷键还是不行,这破软件0.o? 通过选中代码--鼠标右键--Refactor--Extract--Method--弹窗输入方法名也能实现该效果 |
Ctrl+E | 调出最近浏览过的文件列表 |
Ctrl+Alt+O | 清除所有多余的import 导包语句 |
Ctrl+Home/End | 当前页面跳转到页面头或者页面尾 |
Ctrl+(-/=) | 展开或者收起光标所在代码片段 |
Ctrl+Shift+(-/=) | 展开或者收起当前页面的所有代码片段 |
Ctrl+W | 选中当前光标所在代码块,多次触发代码块会逐渐变大 |
Ctrl+Shift+W | Ctrl+W的反向操作,多次触发代码块会逐渐变小,最小变成光标 |
书签快捷键
快捷键 | 功能 |
---|---|
F11 | 给光标所在行添加或者移除书签 |
Ctrl+F11 | 给光标所在行添加特殊标记的书签 |
Ctrl+Shift+数字键 | 给光标所在行添加、更改或者移除以数字作为助记符的特殊书签 |
Shift+F11 | 弹窗查看现存的全部书签 在该弹窗中可以使用快捷键Ctrl+Enter给选中书签添加一段描述 在该弹窗中可以使用快捷键Alt+上下箭头调整该窗口中书签的排列顺序,不会影响书签实际分布 在该弹窗中可以使用快捷键Delete删除指定书签 |
Alt+2 | 将书签列表常驻在左侧边栏 点击IDEA左下角的Favorites也能达到相同的效果 |
Ctrl+数字键 | 快速跳转到以数字作为助记符的特殊书签 |
IDEA可以将一份代码通过简单配置再启动一份相同的运行实例,每个运行实例相当于一台单独的服务器,相当于应用多开
点击Edit Configuration打开运行/调试配置窗口,选择要进行多开的目标实例,点击拷贝按钮,此时会增加一个新的运行实例,修改新实例名称,在Configuration选项卡中配置Environment.Environment Variables设置条件为--server.port=10086
来指定运行实例在同一台机器上的通信端口
导入外部代码或者外部项目的时,需要关联jar包引用,正常情况下,导包数量少IDEA都是使用快捷键"Alt+Enter"组合键一个个导入,当存在大量包需要导入时,一个个导包就显得有些拉胯,不像Eclipse可以使用 "Ctrl+Shift+O" 组合快捷键就可以批量导入包,IDEA可以通过以下设置实现当前文件自动导入只有唯一类名的包,对于存在类名相同全限定类名不同的包仍然需要使用快捷键"Alt+Enter"组合键一个个导入,具体配置如下:
IDEA调试可以加断点生效条件,要求布尔类型的判断条件【见下例】,当满足判断条件时断点才会生效
实例
只需要拷贝以下代码到断点右键复制粘贴到Condition框内
🔎:比如在HashMap在扩容transfer方法一进入就加断点,右键断点处可以设置如下生效条件,该条件的意思是只让变量newTable.length
即新数组的容量为32且当前线程名为Thread-0
或者Thread-1
时才会暂停到断点处
xxxxxxxxxx
newTable.length==32&&(
Thread.currentThread().getName().equals("Thread-0")||
Thread.currentThread().getName().equals("Thread-1")
)
断点的暂停类型为Thread表示选择多线程调试,在调试面板的frame选项卡切换到对应线程点击运行到下一处断点,只有当前选中的线程才会直接运行到下一个断点,其他线程仍然停在上一个断点处;选择All点击运行到下一处断点是所有线程都运行到各自的下一处断点
进行断点调试时,由于IDEA做了优化,在variable一栏无法看到对象的结构,只能看到对象的部分属性和属性值,比如HashMap只能看到key-value
键值对,比如HashMap中的数组元素只能看到引用指向的对象,不能看到对象中的具体属性
查看方法
选中变量右键--View as--Object,这样就会显示变量的所有属性
对于数组元素也是一样的,HashMap中的数组只会展示数组引用指向的元素对象,如果元素对象是链表的头,可以将元素变量右键--View as--Object,这样就能看到链表元素的上一个和下一个元素对象的所有属性了
想支付业务等需求要求UTF-8编码格式,我们可以设置IDEA中的项目文件的编码格式为指定格式
设置方法
在Settings/Editor/File Encodings中设置所有的编码格式包括全局编码、项目编码、各个模块编码、属性配置文件编码都为UTF-8,这样才能保证如使用支付宝支付业务的数据编码正确,否则总是会收到支付宝的错误页提示签名错误等各种问题
名字 | 功能 | 备注 |
---|---|---|
Alibaba Java Coding Guidelines | 将编码过程中不规范的地方列举出来并提示更规范的改进 如"使用ScheduleExecutorService代替Timer吧" | 阿里编码规约插件 |
ASM | 在右侧边栏直接点开就能查java代码对应的字节码 | 反编译插件 |
方法上的多行注释在使用快捷键Ctrl+\生成带模板的方法注释时会自动添加到注解@描述
后
一个看源码小技巧,遇到要点进方法源码的,直接使用快捷键Ctrl+Alt+B替代Ctrl+B跳转,如果是抽象方法运气好只有一个实现直接跳转对应实现不会跳转到抽象类或者接口中去,运气不好有多个实现就到每个对应的实现去看吧,也可以打断点,但是搭环境不太方便
IDEA中流式操作的每个方法都建议新起一行,这样在方法末尾IDEA会提示该流式操作返回值的类型