发布时间:2026-06-08
浏览次数:0
客栈设为“星标”
第一时间收到最新资讯
前言
今儿不谈高并发, 不谈架构设计, 而是要跟大伙说一个每位Java程序员每天都会用到的工具, 也就是IDEA, 来聊一聊。
说实话,用了多年IDEA,我踩过不少坑。
今日, 我把具有最为经典特质的十个坑, 加以梳理而呈现出来, 期望能够助力大家减少经历一些曲折路径。
好多小伙伴于工作里头必定也碰到过类似这般的问题, 像“IDEA陡然变得卡顿起来”, “代码明明不存在差错却就是没办法编译通过”, “Debug期间断点无法产生效果”等等。
这篇文章没有高深的理论,全是实战经验,小白也能看懂。
希望对你会有所帮助。
IDEA的优缺点和使用场景
正式开讲前所进行的行为之后, 我们要去做的是, 很客观地从事这样一种查看行为, 即查看IDEA这款IDE究竟具备何种优势之处、存在哪些不足之处, 以及它到底适宜于哪类场景。
IDEA的优点
与其他相比, IDEA所具备的代码分析引擎更具强大之处, 它能够依据上下文情形给出更为精确的补全建议。
拥有极为强大的重构能力, 其中包括重命名, 提取方法, 改变签名等重构操作, 这些操作具备相当高的安全性, 并且能够自动修复全部引用。
这内置的工具十分丰富, 版本控制是有的, 数据库客户端应有尽有, HTTP也不缺, 终端同样具备, 这些一应俱全, 无需来回进行切换。
插件生态完善:、、等插件几乎覆盖了所有开发场景。
调试具备强大功能, 有条件断点, 有表达式求值功能, 有远程调试环节, 还有内存分析等, 排查问题极为高效。
IDEA的缺点
内存所占据的量相对较高, 在默认配置这个情形之下, 能够轻而易举地消耗掉2至4G的内存, 那些老旧的机器运行起来会比较费劲。
每次导入项目的时候, 或者依赖发生变更之时, 都会触发重新索引事件, 索引机制耗时, 对于大项目而言, 可能需要等待几分钟, 这是一种情况。
其配置相对而言较为复杂, 诸多优化环节都得进行手动校准、调节, 初涉此领域的新手极易被林林总总的设置搅得晕头转向, 不知所措。
商业性质的软件, 其采用版本收费的形式, 虽说能够使用相应版本, 然而众多企业级别的功能, 像是 JPA、JS 等, 却是需要为此支付费用的。
适用场景
场景
是否推荐
说明
大型Java/项目
IDEA的支持无出其右
中小型Web项目
开发效率远高于
多语言混合项目(Java+JS+)
版支持所有主流语言
老旧机器(内存
勉强能用,但建议升级配置或换VS Code
纯前端项目
VS Code可能更合适
学生/开源学习
版足够用
行啦, 知悉了这些背景情况之后, 咱们正式开启主题——我所踏足过的10个坑。
第1个坑:越用越卡,CPU狂飙现象
打开IDEA两三个小时后, 敲代码时会卡顿两秒, 鼠标出现转圈状况, CPU时常百分百。
重启一下又好一会儿,过一会儿又卡了。
原因分析
IDEA出现卡顿, 一般存在两个缘由, 其一为内存分配不够充足, 其二是索引被经常性地触发。
先说说内存。
IDEA 默认的堆内存, 仅仅只有在 512MB 到 1GB 左右的范围, 对于现代的项目来看, 特别是那种微服务项目, 其中一个里面就存在着十几个这种情况而言, 这点内存根本是不够用来使用的。
JVM频繁进行Full GC,自然就卡了。
再说说索引。
在项目之中, IDEA会针对所有的文件, 去构架形成索引以达成像是能够实现即刻就进行寻找、从一处跳跃至另一处等这般功能。
要是你开启了“自动索引外部文件”, 或者项目里存在一个巨大文件夹(前端同学想必熟知), 那么IDEA就会持续尝试去索引那些压根儿不需要索引的文件, 进而导致CPU直接被拉满。
第一步,手动调整IDEA的内存配置。
留意到IDEA安装的目录之处, 寻得.ext.文件(Mac处于// IDEA.app//bin/idea.这个位置), 对以下参数予以变更:
# 建议配置(8G内存机器)
-Xms2048m # 初始堆内存,建议直接给到2G
-Xmx4096m # 最大堆内存,给到4G
-XX:ReservedCodeCacheSize=512m # 代码缓存
-XX:+UseG1GC # 使用G1垃圾回收器,减少停顿
-XX:+UseStringDeduplication # 去重字符串,节省内存
第二步,排除不需要索引的目录。
开启, File -> -> -> , 将那些并非需要索引的文件夹(像是、.git、、build等等)标明为。
做完这两步intellij idea卸载,IDEA的流畅度会有一个质的飞跃。
第2个坑:/报红现象
原本处于良好状态的项目, 在进行了IDEA软件的更新操作或者对特定的某个配置作出更改之后, 所有运用了@Data、且带有@注解符号的类的调用位置, 突然间出现了代码飘红的情况, 编译过程遭遇失败, 给出的提示信息是“找不到相应的方法”。
原因分析
的工作原理是在编译期通过注解处理器自动生成/等代码。
IDEA需要安装插件才能识别这些生成的代码,否则就会报红。
这个坑通常发生在以下几种情况:
解决方案
首先, 查看插件有没有被安装并且启用, 通过File -> -> 搜索, 去确认是不是已经安装好了并且处于勾选状态。
这似乎并不是一个完整且表意清晰的句子呀, 你可以补充完整准确的内容, 以便我按照要求进行改写。
第三步, 要保证针对项目的pom.xml或者build.而言, 已将依赖给引入进去了, 而且所引入的版本并非太陈旧, 推荐版本是:
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<version>1.18.30version>
<scope>providedscope>
dependency>
第四步了, 要是上面已然做了三步那却依旧是不行的状况之时, 去尝试File -> and , 而去将IDEA的缓存给清空还进行重启哇。这般的操作是能够把IDEA里面百分之八十的捉摸不透的问题给解决掉的。
有一回, 我碰到了一种格外诡异的情形, 在同一个项目里, 同事的IDEA不存在问题, 而我的则呈现报红的状况。
末尾察觉竟然是, 处于.idea目录里的配置文件出现了冲突现象, 将.idea目录予以删除, 使得IDEA再度进行生成之际便可恢复正常状态啦。
第3个坑:Debug断点死活进不去现象
处于调试阶段时, 我于一个方法开端的首行位置设置了断点, 可是运行起来后, 那断点全然没有起到实际作用,代码径直就执行过去了。
更离谱的是,有时候断点上的对勾是灰色的。
原因分析
这个坑有几种可能:
断点被设置于不可执行的代码行之处, 诸如接口的方法这一类型, 还有空行以及注释行。然而的断点唯独能够被设定在可执行的字节码行之上。
处于开启“静默断点”状况之中, 或者开启“禁用所有断点”之时: 表示暂时禁用的那个断点图标, 其上有着一条斜线。
有这样一个情况, 代码经受了JIT内联优化, 处于特定模式时, 存在热点方法会被内联的可能, 进而致使断点位置与源码相互对应不上, 就是这样一种状况。
在多线程的环境当中, 断点被别的线程给绕过去了, 要是你设置了条件断点可是条件一直是假的, 那自然是不会进入的。
解决方案
第一步, 查看断点图标呢。若是正常断点即对应红色圆点, 要是带有斜线, 那就点击右键去取消“”。
或者, 按下Ctrl + Shift + F8, 以此打开断点管理面板, 接着查看一下, 所有断点是否被作了禁用处理呢。
其次,确保断点打在可执行行上。比如:
// 以下位置不能打断点
public void doSomething() // 方法签名行
// 这样是可以的
public void doSomething() {
System.out.println("这里可以打断点"); // 第一行大括号后的有效代码
}
其三, 要是处于多线程调试状况下, 那就去核查一番条件断点。IDEA具备在断点处通过右键来设置条件的这类功能, 就像 举例说 的str等于空值。假定条件始终都无法达成, 断点自然是不会被触发的。
第四, 最终极的可供选用的方案一: 运用.( ).( 的方式去打印堆栈, 以此手段来确定问题所在之处, 方案二:要不采用另外一种换作日志输出这种方式。
第4个坑:控制台中文乱码现象
启动项目, 在控制台所打印出来的日志里头, 所有的中文全变为了类似这样的乱码, 要么即“??? ”, 要么就是形如“\uXXXX ”这般的。
.out.("你好") 输出的是“???”。
原因分析
乱码的本质是编码不一致。
那个名为IDEA的控制台, 还有项目的源文件设置的编码, 加上JVM的默认编码, 以及操作系统所采用的编码, 这四处地方, 只要其中有一处出现不匹配的情况, 便极有可能会出现乱码现象。
常见的情况是:
解决方案
第一步,统一所有地方的编码为UTF-8。
打开 File -> -> -> File :
第二步, 对IDEA控制台的编码予以修改, 于Help -> Edit VM这个操作里面添加:
-Dfile.encoding=UTF-8
-Dconsole.encoding=UTF-8
第三步, 针对Maven项目, 于pom.xml里的maven--以及maven--之中同样明确指定编码:
<properties>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
properties>
第四步, 要是使用的是或Log4j, 排查检查日志配置文件的编码, 例如:
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%npattern>
<charset>UTF-8charset>
encoder>
appender>
做完这些配置之后,重启IDEA,乱码问题一般就能解决了。
第5个坑:Git提交时多了.idea文件现象
在使用IDEA自带的Git去提交代码之际, 窗口当中老是会出现一些本不该提交的文件, 像.idea/.xml这样的, 还有/目录下面的class文件, 以及 .iml文件等等。
有时候一不小心就提交上去了,污染了Git仓库。
原因分析
默认情况下, IDEA会将项目的.idea目录纳入版本控制, 同时.IDEA也会把项目的.iml文件纳入版本控制, 这其中的缘由在于, 这些文件记录了项目的配置信息。
只是问题在于, 这些文档当中或许涵盖着本地路径、个人配置等与环境相关联的信息, 不同 的机器相互之间是不应当进行共享的。
/目录是编译产物,更不应该提交。
主要缘由在于未曾配置.文件, 又或者虽已配置然而IDEA却未曾准确识别。
解决方案
在项目的根目录下创建.文件,把以下内容放进去:
# Compiled class file
*.class
target/
out/
# IntelliJ IDEA
.idea/
*.iml
*.iws
*.ipr
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
.idea/compiler.xml
.idea/libraries/
# Log file
*.log
*.log.gz
# OS generated files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
之后于IDEA里, 开启, 进而开启, 进到Files的界面, 以此确保不存在任何产生冲突的规则。
要是你的文件已然处于Git仓库里头, 而且先前错误地提交了.idea目录, 那就得先去执行命令从Git缓存里将其移除掉:
git rm -r --cached .idea
git commit -m "Remove .idea from git"
之后再提交,就只会看到需要提交的源码文件了。
第6个坑:Maven依赖下载巨慢现象
在IDEA里头, 对Maven项目(All Maven)进行刷新之际, 右下角持续处于转圈状态, 下载这些依赖甚是缓慢, 有时直接就因超出时间限制而报出“ ”, 或者报出“Read timed out”。
原因分析
Maven 默认的那个中央仓库处于国外, 网络延迟状况大, 下载速度自然而然比较慢。
Idea虽带Maven以为置内焉, 然其默认用Maven自带之.xml, 此.xml中未设国内镜像也。
除此以外, IDEA的Maven以及命令行Maven, 有可能会共同使用同一个本地仓库(~/.m2/), 要是同时进行操作, 就会出现锁文件冲突的情况。
解决方案
第一步,配置国内镜像源。
要在File, 进入对应的Build模块, 再进入Build Tools模块里的Maven选项中, 去找到User file, 点击特定标识, 接着选择或者创建一个.xml文件, 往里面填入以下内容:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<mirrors>
<mirror>
<id>aliyunmavenid>
<mirrorOf>centralmirrorOf>
<name>阿里云公共仓库name>
<url>https://maven.aliyun.com/repository/publicurl>
mirror>
mirrors>
<profiles>
<profile>
<id>jdk-1.8id>
<activation>
<activeByDefault>trueactiveByDefault>
<jdk>1.8jdk>
activation>
<properties>
<maven.compiler.source>1.8maven.compiler.source>
<maven.compiler.target>1.8maven.compiler.target>
<maven.compiler.compilerVersion>1.8maven.compiler.compilerVersion>
properties>
profile>
profiles>
settings>
第二步, 在Maven的设置里头, 将“Work ”关闭掉(除非你确实是要离线去工作), 把“ Maven ”开启, 这般依赖产生变更之际就会自动展开下载。
先是第三步, 要是情形是你的网络环境尤为糟糕, 那么能够试着去配置IDEA的HTTP代理。接着是&, 随后是 -> , 再之后是 -> HTTP Proxy, 假设公司存在内网代理, 把它填进去就行。
设置完成以后, 按下 Maven界面里的“全选”按键 , 下载的速率理应显著加快。
第7个坑:代码编译通过,运行却报错现象
在IDEA当中, Maven进行编译时不存在任何错误情况, 而且mvn clean操作也顺利成功完成了。
然而, 当去运行main方法之际, 或者在启动Boot之时, 经由控制台看见了报错现象, 内容为: java.lang.on: com.xxx.。
原因分析
存在这样一个情况, 导致出现问题的缘由极为隐蔽, 具体是, 有关IDEA的编译器, 以及针对Maven的编译输出目录, 二者呈现出不一致的状况。
IDEA默认的编译输出目录有着两种情况, 其一为项目根目录/out/ , 其二则是为//;而对于Maven而言其编译输出目录是//。
倘若你已然对项目结构予以修改, 又或者IDEA的缓存出现紊乱状况, 那就极有可能致使IDEA在运行的过程当中使用的里面寻觅不到某些类。
再有一个常见缘由是: 应用了, 可针对IDEA的注解处理器而言, 并未生成代码, 亦或是所生成代码的路径存在偏差。
解决方案
最初, 开启File往前至Build, 再往前, 要保证“Build”处于勾选状况, 不过需留意此情形会于你存储文件之际自行开展编译, 对性能存在影响。
随后, 核查File -> -> , 瞧瞧每一个的“ path”以及“Test path”是不是指向了恰当的目录。通常来讲, Maven项目理应指向/以及/test-。
最具暴力性的解决做法是: 点击“Build”, 走向 清空全部编译给出的结果之处, 而后再度予以编译, 要是依旧行不通, 那就展开“File”, 并且 清空缓存。
另外具备一个特别的办法: 运用Maven命令行先行完成打包操作, 接着以手动方式去运行打好包的jar包, 查看是否为同样的问题。
若jar包可运行, 那么便是IDEA的运行配置存在问题;设若jar包同样报错, 那么即为代码自身有依赖问题。
第8个坑:快捷键失灵现象
早已习惯借助Ctrl+C、Ctrl+V来进行代码的复制粘贴操作, 然而在某一天忽然发觉该快捷键失效了, 又或者是按下之后呈现出怪异的行为(像是弹出某些面板、删除文字之类)。
更离谱的是,Ctrl+Alt+L 格式化代码也无效。
原因分析
IDEA的快捷键冲突通常有两种情况:
有与其他软件快捷键相冲突的情况, 举例来说, 微信PC版其截图快捷键为Ctrl+Alt+A, 这同IDEA的一些插件快捷键出现了重复状况, 另外, 搜狗输入法的Ctrl+Shift+F会进行简繁体的切换。
IDEA被无意间修改了, 这或许是由于不小心摁到了“切换”的快捷按键, 又或许是某个插件对设置进行了改动。
解决方案
第一步,检查是否切换了。
开启 File -> -> , 瞧瞧当下所选中的是否为你平日里常用的(举例来说, 默认状态下呢, Mac对应的是Mac OS X)。要是呈现的是copy或者其他的情况, 那就表明被改动过了。能够点击“ ”将其恢复为默认状态。
第二步,排查外部软件冲突。
常见的冲突有:
处理办法是前往这些软件当中对快捷键予以修改, 或者径直将它们关闭。我个人所禀持的习惯是在撰写代码之际把聊天软件退出, 从而获取清净。
首先是第三步, 要是存在某个特定快捷键失效的情况, 那么能够在其中搜索此快捷键的动作, 进而查看是不是被占用了。
举例来说, 当进行搜索 Code(也就是格式化代码)操作时, 其默认的是Ctrl + Alt + L组合按键, 要是出现显示多个动作的情况, 那就表明存在冲突现象, 此时则能够通过右键点击来移除其中一个。
第9个坑:连不上MySQL现象
在 IDEA 自带的工具连接 MySQL 时会报错, 这个工具很好用, 很多小伙伴可能不知, 时报错内容为: The time zone value '???ú±ê×??±??' is 或者 Could not to。
原因分析
MySQL 8.0往上的版本, 有着要求明确指定时区参数的规定。IDEA的连接配置, 在默认的情况下, 并不包含该参数, 进而致使了错误的产生。
解决方案
于IDEA的面板里头, 点选数据源设置, 而后进入“”选项卡之中去, 再借助手动方式去添加上一个参数:
如果还不行,在“”页面的URL后面直接加上:
jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf-8
此外, 要是采用 Boot 项目的数据源配置, 那么也提议在连接池的 URL 里添加这些参数, 以此避免运行时出现同样的错误。
最终, 核查一番MySQL驱动版本, IDEA默认会去下载最新的驱动, 然而要是你的MySQL属于5.7版本, 运用8.x的驱动或许会出现不兼容的状况。
可以在数据源的“”下拉菜单中选择旧版本。
第10个坑:提交代码时自动格式化现象
当处于团队协作情形之时, 在你将代码予以提交之前, IDEA会自动为你执行代码格式化操作(Ctrl+Alt+L)。
结果提交上去之后,整个文件的缩进、换行、空行全变了。
可能你所做的改动仅仅是一行, 然而, 在git diff之中, 却呈现出了整个文件几百行的变更情况。
代码的时候,同事根本看不出你到底改了啥。
原因分析
这有IDEA的“崇高”功能, 此功能是在提交代码之际, 会自动去执行代码格式化, 还会对导入进行优化等操作。
初衷是好的,希望保持代码风格统一。
不过, 要是团队成员并未采用统一的代码格式化规则, 比如说, 每个人的缩进设置存在差异, 有的人采用4个空格进行缩进, 有的人采用2个空格进行缩进, 还有的人采用Tab进行缩进, 那么这就会致使互相覆盖的情况发生, 进而导致diff爆炸的结果出现。
解决方案
有两种解决思路:
方案一:统一团队代码格式(推荐)
于项目根目录之处, 放置一个.文件, 此乃各大IDE以及各位编辑器一同遵守之意式条规:
# .editorconfig
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 4
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.java]
indent_size = 4
[*.xml]
indent_size = 2
IDEA能够自动进行识别, 进而提示究竟是否予以采用, 如此一来, 所有的人都会运用同一套既定规则 标点符合用的是否正确。
与此同时, 于IDEA里导出代码格式化的规则(经由File -> -> -> Code Style -> Java -> -> 这样一系列操作), 将文件置于项目版本控制范围之内, 以便让同事进行导入。
方案二:关闭自动格式化功能
倘若你不愿进行自动格式化, 那就将其关闭。而后开启“File -> -> -> ”, 把“ 代1码”、“ ”、“ 代2码”前面的对勾统统予以移除掉。
这般一来, 于提交之际, 便仅仅会提交你凭借手动予以改动的那部分, 而不会对其他代码有所动作。当然咯, 你得自行确保代码格式是处于良好状态的。
私自给出的提议选用第一套方案, 如此这般既维持住了代码的整齐干净, 又不至于引发格式方面的相互抵触。
总结
好了,10个坑终于讲完了。
我来帮大家快速回顾一下:
序号
一句话解决方案
IDEA越来越卡
调大内存 + 排除无需索引的目录
失效
装插件 + 开启注解处理
断点进不去
打在有效行 + 检查禁用状态
控制台中文乱码
统一UTF-8 + JVM参数
Git提交了不该提交的文件
配置. + 移除已提交的
Maven依赖下载慢
配置阿里云镜像
on
检查编译输出目录 +
快捷键失灵
检查 + 关闭冲突软件
数据库时区错误
添加参数
10
提交时自动改格式
统一.或关闭自动格式化
最后用一张图来总结一下这些坑的应对思路:
编写这篇文章, 其一乃是助力大家避开陷阱地方, 其二又是针对自身这些年来所具备的IDEA使用经验状况的一回归纳。
工欲善其事intellij idea卸载,必先利其器。
IDEA的确是一种极为强大的工具, 然而, 不管它多么强大, 要是不懂得运用, 或者应用得不正确, 那么它就会转变成阻碍前行的绊脚石。
希望这篇文章能给大家带来实实在在的帮助。
往期回顾
1、什么!你说胡彦斌也在苦修Vibe Coding 2、别弄错了Python里的这几个运算符 3、终于说透了!为什么微信撤回只能等2分钟,还非得提醒对方? 4、2026,这些 JavaScript API 已经废弃! 5、再见 IDEA,我把你彻底卸载了。。。 点击关注公众号,阅读更多精彩内容
如有侵权请联系删除!
TAGS:
Copyright © 2023 江苏优软数字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服务提供商
13262879759
微信二维码