新来的同事上周装 IntelliJ IDEA,从下载到能把项目跑起来整整折腾了三天,卡的地方说起来都可笑:JDK 路径选到了 bin 目录、Tomcat 配置找不到入口、打开一个 JSP 文件发现语法全是灰的。这些坑我在过去几年里几乎每年都要重新踩一遍,因为大版本一更新,向导页面、菜单项、默认参数全都在变。这篇就把 IntelliJ IDEA 安装、配置、跑通第一条请求的完整流程捋一遍,不讲虚的,全部按我自己机器上的实际操作来写。不管你是第一次装 IDEA 的学生,还是从 Eclipse 转过来一时找不到北的老开发,或者只是想给团队写一份能直接转发的新人上手指南,下面这些步骤都可以照着做。需要提前说明的是,我全程以官方渠道的免费版本为主线,不涉及任何来路不明的授权手段,这一点后面会专门说。
1. 装之前先想清楚:版本选型与硬件环境评估
很多人下载页一打开就手足无措,两个版本、四个平台、一堆历史版本号,不知道点哪个。其实只要先回答三个问题就行:你要写什么语言、你所在的操作系统是什么版本、你的机器有多少内存和磁盘。这三个问题决定了你该下哪个安装包,也决定了后面会不会在安装到一半的时候发现跑不起来。
1.1 社区版和旗舰版,到底差在哪里
IntelliJ IDEA 分成 Community Edition(社区版)和 Ultimate(旗舰版)两条线。这是所有选择的起点,选错了后面会反复怀疑人生。
社区版是免费的,源码开放,支持 Java、Kotlin、Groovy、Scala 这类纯 JVM 语言的开发,Maven、Gradle 构建,JUnit 测试,Git 版本控制,这些核心功能一个不少。旗舰版是收费的,多出来的主要是企业级框架和服务器集成能力:Spring 全家桶的深度支持、Java EE / Jakarta EE、JSP、Servlet、Tomcat 等应用服务器的运行配置、数据库工具、HTTP Client、JavaScript 和 TypeScript 的高级支持。
| 能力项 | 社区版 | 旗舰版 |
|---|---|---|
| Java / Kotlin 基础开发 | 支持 | 支持 |
| Maven / Gradle | 支持 | 支持 |
| Git / SVN 版本控制 | 支持 | 支持 |
| JUnit 单元测试 | 支持 | 支持 |
| Spring / Spring Boot 专项支持 | 无 | 支持 |
| JSP / Servlet / Java EE | 无 | 支持 |
| 内置 Tomcat 运行配置 | 无 | 支持 |
| 数据库工具窗口 | 无 | 支持 |
| JavaScript / TypeScript 智能提示 | 基础 | 完整 |
这里有个特别典型的连锁反应,后面第五章还会展开:你用社区版打开一个 JSP 项目,会发现编辑区里 JSP 标签没有语法高亮,然后你去 Settings → Editor → Color Scheme 里找 JSP 的配色项,怎么翻都翻不到。这不是设置藏在哪里的问题,而是社区版压根就没有 JSP 语言支持,所以配色方案里自然不会有这一项。
我的建议很直接:如果你是学生、做纯后端 Java 练习、写算法题、开发 Spring Boot 单体应用并且只用spring-boot-starter-web内嵌容器,社区版完全够用,而且免费。如果你确实要做传统 SSM/SSH 项目、要部署 war 包到外部 Tomcat、要写 JSP,那就要考虑旗舰版,或者用后面提到的替代方案。别为了一个"听起来更全"就盲目上旗舰版,很多功能你一年也用不到一次。
1.2 系统要求与磁盘规划,别等装完了才发现 C 盘爆了
官方对较新版本的要求大致是:Windows 10 及以上、macOS 10.15 及以上、主流 Linux 发行版,内存最低 2GB 但实际体验建议 8GB 起步,磁盘空间至少预留 5GB。这几个数字里,真正容易出事的是磁盘。
安装包本身解压后大概 2.5 到 3.5GB,但真正吃空间的是索引和缓存。IDEA 会为每个打开过的项目建立索引,大型项目索引一次可能生成几百 MB 到 2GB 的文件,缓存在 Windows 上默认落在C:\Users\你的用户名\AppData\Local\JetBrains\,配置在AppData\Roaming\JetBrains\。我见过好几个同事 C 盘只剩 3GB,装完 IDEA 直接红了。
所以装之前先做两件事。第一,确认安装目录不要放在中文路径下,也不要放在需要管理员权限才能写的目录里,推荐类似D:\DevTools\JetBrains\这样的纯英文短路径。第二,如果你 C 盘紧张,提前把缓存和配置目录也迁到 D 盘,方法是编辑安装目录bin下的idea.properties文件,把这两行的注释去掉并改成自己的路径:
idea.config.path=D:/DevTools/JetBrains/IDEA-config idea.system.path=D:/DevTools/JetBrains/IDEA-system注意路径里的斜杠要用正斜杠,反斜杠在某些版本上会被当成转义符。改完之后所有插件、索引、日志都会写到新位置,C 盘能省下好几个 G。这个操作在安装前做最省事,装完再迁就要手动搬目录,容易出问题。
1.3 关于授权,说几句实在话
网上搜 IDEA 安装教程,排在前面的往往带着各种"激活""绿色版"之类的字眼。我明确不建议走这条路,原因不是道德说教,而是实际风险:改过的安装包有被植入东西的可能,尤其是要读取你全部代码的工具;来源不明的补丁在版本升级后动不动就失效,你得反复折腾;公司里用这类版本,出了代码泄露事故是要担责的。
正规且免费的路径其实不少。社区版本身就是永久免费且开源可用的,功能对绝大多数 Java 学习和常规后端开发来说足够。在校学生和教师可以通过官方教育授权渠道申请旗舰版免费使用权,开源项目维护者也有对应的免费授权。真要用旗舰版做商业项目,公司一般都会采购,一个席位一年也就几千块,比起踩坑的时间成本划算得多。先把自己的需求搞清楚,再决定要不要为旗舰功能付费,这比装完再纠结强。
2. 下载与安装包获取,一步一步不点错
版本想清楚了,接下来就是装。这一步看着简单,但 Windows 安装向导那四五个复选框,选与不选对后面日常使用的影响其实挺大,我一个个说。
2.1 官网下载页面的选项怎么读
打开官网的下载页,你会看到两个大按钮对应社区版和旗舰版,下面有操作系统选项卡。这里有几个容易忽略的细节。
第一,安装包格式。Windows 提供.exe安装器和.zip免安装包两种。.exe适合大多数人,会自动注册卸载信息、创建快捷方式。.zip适合需要多版本共存或者没有管理员权限的场景,解压就能跑,缺点是升级要手动换目录。macOS 是.dmg,Intel 芯片和 Apple 芯片(M 系列)是两个不同的包,下错了打开会提示不兼容,这个坑每年都有人踩。Linux 一般是.tar.gz,也有 Snap 和 Flatpak 渠道。
第二,版本号的选择。下载页默认给最新稳定版,但如果没有特殊需求,我建议不要一上来就追最新的.1小版本,刚发布的大版本偶尔会有插件兼容问题。等一两个小版本再升,稳定性会好很多。反过来,如果你机器是 Windows 7,那就不是"要不要用最新版"的问题,而是根本装不上,这个在第五章单独讲。
第三,不要从任何第三方下载站拿安装包。这类站点经常把安装包重新打包,塞进一堆捆绑软件,甚至改动安装程序。官方下载走 CDN,速度其实不慢,国内一般能跑到几 MB/s。
2.2 Windows 安装向导每一步该怎么选
双击.exe之后,大致会经过这几个界面,我按顺序说重点。
安装路径页,改到你规划好的英文短路径,比如D:\DevTools\JetBrains\IntelliJ IDEA 2024.2。带版本号的目录名是个好习惯,以后想装第二个版本互不干扰。
安装选项页是重点,四个复选框逐个分析:
- Create Desktop Shortcut(创建桌面快捷方式):建议勾,选 64-bit launcher。现在几乎不存在 32 位系统跑 IDEA 的场景。
- Update PATH Variable(更新环境变量):强烈建议勾。勾了之后安装目录的
bin会加进 PATH,你才能在任意目录的命令行里执行idea .直接打开当前文件夹为项目,这个操作一旦习惯就回不去了,比开 IDEA 再一层层选目录快得多。 - Update Context Menu(更新右键菜单):建议勾。勾了之后在任意文件夹右键会出现"Open Folder as Project",临时看一份别人的代码特别方便。
- Create Associations(创建文件关联):这个要谨慎。勾了之后
.java、.kt、.groovy等文件的默认打开程序会变成 IDEA,双击一个 java 文件就会启动整个 IDE,启动一次十几秒,反而更慢。除非你习惯双击打开,否则我通常不勾。以后想改回来,去 Windows 的"默认应用"里设置即可。
点完安装,等进度条走完,勾选 Run IntelliJ IDEA 就能直接启动。整个安装过程通常两三分钟,如果超过十分钟还在转,多半是杀毒软件在做实时扫描,可以临时加个白名单。
2.3 macOS 与 Linux 的安装差异
macOS 上把.dmg拖进 Applications 就完事了。第一次打开如果提示"来自未识别的开发者",去"系统设置 → 隐私与安全性"里点"仍要打开"。M 系列芯片装完之后启动明显比 Intel 版本快,索引速度差距也很大,这也是为什么现在做 Java 开发我更推荐 M 芯片的机器。
macOS 上想在终端用idea .命令,需要在 IDEA 里走一次 Tools → Create Command-line Launcher,生成一个启动脚本。这个步骤很多人不知道,以为装了就有。
Linux 下tar.gz解压后直接跑bin/idea.sh就能用。想加到应用菜单,可以用 Tools → Create Desktop Entry。要注意的是 Linux 上文件监视依赖inotify的数量上限,项目大的时候 IDEA 会提示你调整fs.inotify.max_user_watches,不调的话会出现"外部文件改动检测不到"的问题,改完文件要手动刷新。这个提示出现时按它给的命令加个sysctl配置就行。
3. 首次启动与 JDK 配置,决定项目能不能跑
装完只是有了个编辑器外壳,真正让它变成能编译能运行的开发环境,靠的是 JDK 配置这一步。这一步出错的人最多,症状也最典型:项目里所有java.lang.*的类都标红,String都不认识。
3.1 首次启动向导别乱点
第一次启动会依次问几个问题。
Import Settings 页,如果是新装,选 Do not import settings。如果你之前装过老版本想继承配置,选第一项指向老版本的配置目录。注意跨大版本导入配置偶尔会带来插件冲突,如果导入后启动异常,直接删掉配置目录重来更快。
主题选择页,Dark 和 Light 随你,这个随时能换,不影响任何功能。
Plugins 页会列出一些推荐插件,社区版会推荐一些常用工具。我建议这一步直接跳过,先让 IDE 正常起来,插件后面按需装,一次装一堆容易出问题还找不到是哪个惹的祸。
用社区版的话不会要求登录账号,直接进主界面。旗舰版会要求登录或输入授权信息,按官方引导走就行。
进主界面之后,Welcome 窗口上有 Projects、Customize、Plugins、Learn 几个入口,还有一个 Check for Updates。先别急着建项目,把 JDK 配好。
3.2 JDK 路径配置的三种方式与优先级
先说一个高频错误:JDK 路径要选 JDK 的根目录,不是bin目录,也不是javac.exe所在的目录。正确的路径长这样:D:\Java\jdk-17.0.9,里面直接能看到bin、lib、include、jmods这些文件夹。如果你选到了D:\Java\jdk-17.0.9\bin,IDEA 会提示找不到有效的 JDK,或者勉强认了但编译报奇怪的错。
IDEA 里配置 JDK 有三层,优先级从大到小:
第一层是全局 SDK 列表。File → Project Structure → Platform Settings → SDKs → 加号 → Add JDK,然后选择 JDK 根目录。这里配好之后,这个 JDK 就能被所有项目复用。建议把所有本机装过的 JDK 都加进来,比如 JDK 8、11、17、21 各一个,以后切换项目不用重配。
第二层是项目级 SDK。Project Structure → Project → SDK,下拉选择刚才加好的 JDK,同时把 Language level 设成和 JDK 匹配的版本。这里有个细节:Language level 控制的是编译时允许使用的语言特性,比如设成 8 就不能用var、文本块、record 这些新语法。一般让它跟 SDK 版本一致,除非你的项目要向下兼容。
第三层是模块级 SDK。Project Structure → Modules → Dependencies → Module SDK,一般继承项目级就行。多模块项目里如果某个模块要用不同 JDK,这里可以单独改。
还有一个容易漏的地方:Settings → Build, Execution, Deployment → Build Tools → Maven → Runner里的 JRE,以及 Gradle 的 Gradle JVM。这两个是构建工具自己用的 JDK,跟项目 SDK 是分开的。常见症状是项目 SDK 设成了 17,但 Maven 用的还是系统默认的 JDK 8,编译时提示"无效的目标发行版:17"。看到这个报错,第一反应就是去检查这两个地方。
3.3 多版本 JDK 共存时的实际处理
现在很多机器上同时装了好几个 JDK。这里的关键认知是:IDEA 内部的 SDK 管理跟系统的JAVA_HOME环境变量基本没关系。JAVA_HOME影响的是命令行直接敲java、javac时的版本,以及 Gradle 在没指定 JVM 时的默认值。IDEA 用的是自己 SDK 表里的绝对路径。
所以你可以放心大胆地让系统JAVA_HOME指向 JDK 8(因为某些老工具需要),同时在 IDEA 里给新项目配 JDK 17,互不干扰。Gradle 项目稍微特殊一点,Gradle 默认会找JAVA_HOME,所以要么在 IDEA 的 Gradle 设置里手动指定 Gradle JVM,要么在项目的gradle.properties里写org.gradle.java.home。
如果你想快速确认 IDEA 到底在用哪个 JDK,打开Settings → Build, Execution, Deployment → Compiler → Java Compiler,看 Target bytecode version;再打开终端,在 IDEA 内置的 Terminal 里敲java -version和javac -version。两个地方对比一下,基本就能定位问题。有个小技巧:内置 Terminal 里执行echo $JAVA_HOME(Windows 上用echo %JAVA_HOME%),看看它是不是你期望的那个,如果这里不对但项目能编译,说明是构建工具的问题而不是 IDEA 的问题,排查方向就清楚了。
配置完 JDK,新建一个最简单的 Java 项目,写个Hello World,点绿色三角运行。第一次运行会先编译再执行,看到控制台输出,说明环境通了。
4. 插件与常用设置,把 IDEA 调成顺手的形状
环境跑通只是及格线,IDEA 真正的效率优势来自插件和设置。这一章我把常用的清单和配置项整理出来,你可以照着筛选,不用全装。
4.1 必装与按需安装的插件清单
装插件的路径是Settings → Plugins → Marketplace,搜索名字,点 Install,装完重启。我按"装了几乎不会后悔"和"看项目类型决定"分两类说。
基础体验类:
| 插件名 | 作用 | 建议 |
|---|---|---|
| Chinese (Simplified) Language Pack | 界面汉化 | 英文不熟的可以装,熟悉菜单后建议换回英文,因为绝大多数教程和报错都是英文的 |
| Key Promoter X | 提示你正在用的操作用什么快捷键 | 强烈推荐,用一个月能记住几十个快捷键 |
| Translation | 中英互译,可划词翻译注释和变量名 | 看英文源码时很顺手 |
| .ignore | 生成和管理各种 ignore 文件 | 每个项目都用得到 |
| Rainbow Brackets | 彩色括号配对 | 嵌套多的时候能救命,但也有人觉得花 |
| GitToolBox | 行内显示代码最后修改人 | 团队协作排查问题很有用 |
按项目类型决定的:
- 写 Spring Boot 的,如果用的是旗舰版,框架支持是内置的;社区版可以考虑装 Spring Assistant 之类的社区插件,但体验和旗舰版差距不小。
- 用 Lombok 的项目必须装 Lombok 插件,否则
@Data、@Slf4j生成的 getter/setter 和 log 变量全是红的。IDEA 2020.3 以后自带部分支持,但启用注解处理器还是必须的:Settings → Build, Execution, Deployment → Compiler → Annotation Processors → Enable annotation processing要勾上。这个漏勾的报错特别迷惑人。 - 用 MyBatis 的可以装 MyBatisX 或 Free MyBatis plugin,能在 Mapper 接口和 XML 之间跳转。
- 写前端的,Vue.js、React 相关插件按需装。
关于 AI 编程助手,现在市面上国内外的插件都不少,装在 IDEA 里能补全代码、解释报错、生成单测。装之前有两个考虑:一是这类插件需要联网并且通常要登录账号,公司内网环境可能连不通;二是它会把你正在编辑的代码片段发到远端,涉及公司代码,最好先确认合规要求,别随手在核心项目里开着。个人项目自己权衡,公司项目我建议先问一句。
4.2 编码、字体、主题这些容易被忽略的设置
编码是国产开发环境里最经典的乱码来源。推荐统一按这个顺序配:
Settings → Editor → File Encodings,三个下拉框全部设成 UTF-8:Global Encoding、Project Encoding、Default encoding for properties files。第三个特别关键,properties 文件默认是 ISO-8859-1,中文注释会变乱码。同一个页面下方有个选项 "Transparent native-to-ascii conversion",勾上它,properties 里的中文会以\uXXXX形式存盘但显示成中文,稳妥。
如果项目里有一些 GBK 编码的老文件不想动,可以在 File Encodings 页面下方单独为某个目录或文件指定编码。
字体方面,我个人的配置是:编辑器字体用 JetBrains Mono(安装 IDEA 时自带),字号 14 到 16,行高 1.2。等宽字体对代码对齐非常重要,别用宋体或者雅黑。开不开连字看个人喜好,!=和>=会变成连字符合号,有人觉得清晰有人觉得别扭。
还有一个设置容易被忽略但影响很大:Settings → Editor → General → Code Completion里的 "Match case" 选项。默认是勾上的,意味着你打小写字母时不会匹配大写开头的方法。改成不勾,补全的命中率会明显提升,这个我试过很多次,确实更顺手。
自动导包和自动删包也建议打开:Settings → Editor → General → Auto Import,勾上 "Add unambiguous imports on the fly" 和 "Optimize imports on the fly"。前者自动补 import,后者自动清理没用的 import,省掉大量手动操作。
4.3 集成 Tomcat 与运行配置
这是社区版用户最容易卡住的地方,我先把结论说清楚。
旗舰版有内置的 Tomcat 运行配置。路径是Run → Edit Configurations → 加号 → Tomcat Server → Local,然后在 Server 标签页点 Configure 指定 Tomcat 安装目录(注意也是根目录,里面能看到bin、conf、webapps),在 Deployment 标签页点加号选 Artifact,通常选war exploded形式,这样改 JSP 和静态资源不用重启。Application context 决定访问路径,设成/就是根路径。
社区版没有这个菜单项。你在 Edit Configurations 里翻遍所有模板也找不到 Tomcat,因为这是旗舰版的专属功能。替代方案有几种:
第一种是装 Smart Tomcat 插件,它在社区版里补上了类似的能力,可以指定 Tomcat 目录、部署目录、上下文路径,用起来和内置的差不多,是这个场景下最常见的选择。
第二种是走 Maven 插件。在pom.xml里配tomcat7-maven-plugin或cargo-maven2-plugin,然后用 Maven 面板跑tomcat7:run。缺点是版本偏老,对 Servlet 4.0 以上支持一般。
第三种是老老实实打包:mvn package生成 war,手动丢进 Tomcat 的webapps目录,启动 Tomcat。开发阶段改一次代码要重新打包重新拷,效率很低,只适合偶尔验证。
第四种,如果是新项目,我建议直接用 Spring Boot 的内嵌容器,把 Tomcat 依赖进来,main方法直接跑。社区版对 Spring Boot 的支持虽然不如旗舰版深入,但运行和调试是没问题的,省掉整个外部容器的配置环节。很多团队现在新项目都不再单独部署 Tomcat 了。
运行配置里还有几个值得调的地方:VM options 里可以加-Dfile.encoding=UTF-8保证控制台输出不乱码;On 'Update' action 设成 Update classes and resources,热更新体验最好;Before launch 里检查有没有 Build 步骤,缺了的话改了代码点运行不会重新编译。
5. 常见问题排查实录,装完之后的那些坑
前面几步走完,环境基本就通了。但实际用起来总会冒出各种状况,这一章把我自己和同事遇到过的典型问题整理成速查表,附上排查思路。
| 现象 | 大概率原因 | 处理方式 |
|---|---|---|
所有 Java 类标红,String都不认识 | 项目 SDK 没配或配错 | Project Structure 里指定有效 JDK 根目录 |
| 编译报"无效的目标发行版:17" | Maven/Gradle 用的 JDK 版本低于编译目标 | 检查 Maven Runner 的 JRE 和 Gradle JVM |
| 启动要等一两分钟,卡在 Indexing | 缓存目录在机械盘,或 Xmx 太小 | 迁缓存到 SSD,调大堆内存 |
| 插件市场打不开,一直转圈 | 网络限制或代理未配 | 配置 HTTP Proxy,或用离线安装 |
| 中文注释显示成方块 | 字体不支持中文 | 换一个带中文字形的等宽字体 |
| 控制台中文输出乱码 | 运行时的文件编码不是 UTF-8 | VM options 加-Dfile.encoding=UTF-8 |
| Color Scheme 里找不到 JSP | 用的是社区版,没有 JSP 语言支持 | 换旗舰版,或换用内嵌容器方案 |
| 改了代码点运行没生效 | 运行配置里缺 Build 步骤 | Before launch 里添加 Build |
5.1 启动慢、卡顿、索引重建
IDEA 启动慢,九成跟索引有关。第一次打开一个项目,它会扫描所有源码建索引,大型项目几分钟很正常,这个没办法跳过。但如果每次启动都慢,那就是别的问题了。
先看缓存目录在不在固态盘上。如果你的系统盘是 SSD 而缓存被配置到了机械盘,索引读写会慢到让人崩溃。前面 1.2 节讲的idea.system.path就是干这个的,确保它指向 SSD。
再就是排除不需要索引的目录。前端项目的node_modules、Java 项目的target和build、日志目录、生成的代码目录,这些都不需要索引,却能吃掉大量时间。做法是在项目视图里右键目录 →Mark Directory as → Excluded,它会变成橙色。node_modules排除之后,打开前端项目能快好几倍。注意排除只是不索引,不影响你查看文件,也不影响运行。
还有一个容易被忽视的点:Settings → Plugins里关掉不用的插件。每个插件在启动时都要加载,装几十个插件的机器启动慢是必然的。定期清理一下,或者用Settings → Appearance & Behavior → System Settings里的设置控制启动时打开上次的项目。
如果遇到索引莫名其妙损坏,症状是符号跳转错乱、明明存在的类标红、补全不工作,那就走File → Invalidate Caches / Restart,选 Invalidate and Restart。这个操作会清掉缓存重建索引,耗时几分钟,但能解决大部分玄学问题,相当于 IDEA 的安全模式。我一般把它当成排障的第一步。
5.2 插件市场连不上、插件装不上
这两年问得最多的就是"插件安装感觉没法联网"。这个问题的排查顺序是这样的。
第一步,先确认是不是真的断网。打开Settings → Plugins → Marketplace,等它加载,如果顶部的搜索框一直转圈,看右下角有没有报错信息。同时用浏览器试试能不能打开常规网站,排除整体网络问题。
第二步,检查代理设置。Settings → Appearance & Behavior → System Settings → HTTP Proxy,这里有三个选项:No proxy、Auto-detect proxy settings、Manual proxy configuration。公司网络通常走代理,选 Auto-detect 一般能自动读到系统代理;自动检测不灵就手动填主机和端口,然后在下方填上认证信息。填完点 Check connection,输入一个常规网址测试,通了再回插件页重试。
这里有个容易忽略的细节:IDEA 有 "HTTP Proxy" 和 "Secure Proxy" 两套设置。有些网络环境下前者通后者不通,或者反过来,可以都配一遍试试。另外如果配置了代理之后发现更慢或者报证书错误,改回 No proxy 再试,有时候是代理本身的问题。
第三步,走离线安装。这是最稳的方案,尤其是内网环境。在官方插件仓库网站搜索插件名,下载与你的 IDEA 大版本匹配的.zip文件(版本不匹配会提示不兼容),然后Settings → Plugins → 齿轮图标 → Install Plugin from Disk,选中 zip 直接装,重启即可。离线安装完全不依赖 IDE 内的网络请求,成功率最高。唯一的麻烦是要自己管理版本对应关系,装之前看一眼插件的兼容版本说明。
还有一种情况:插件装上了但功能不生效。多半是没重启,或者插件和当前 IDE 大版本不兼容。去 Plugins 页面看已安装列表,不兼容的插件名字会标红并提示 Update,能更就更,不能更就禁用。
5.3 编码乱码与 JSP 相关的那些问题
乱码问题的排查逻辑很简单:编码必须全链路一致。链路有四段——源文件本身存盘用的编码、IDEA 读取文件用的编码、编译器编译时用的编码、运行时 JVM 的输出编码。任何一段不一致,中文就会变乱码。
源文件编码一致性在File Encodings里配,前面说过了,全部 UTF-8。编译编码在Settings → Build, Execution, Deployment → Compiler → Java Compiler的 Additional command line parameters 里,可以加-encoding utf-8。运行时编码在运行配置的 VM options 里加-Dfile.encoding=UTF-8,或者在 Maven 的pom.xml里配project.build.sourceEncoding属性。
一个特别的坑:Windows 的控制台默认代码页是 GBK,即使你的程序输出 UTF-8,控制台也可能显示乱码。这时候可以用chcp 65001切换代码页,或者在 IDEA 里勾选Settings → Editor → General → Console → Default encoding设为 UTF-8。IDEA 内置终端和控制台是两回事,两个地方都要看。
再说 JSP。前面提过,社区版不支持 JSP,所以 Color Scheme 里找不到 JSP 项是正常的,不是配置问题。如果你必须在社区版里写 JSP,语法高亮基本没有,只能当纯文本编辑器用,代码提示、标签补全、EL 表达式检查全都缺失。这种情况下要么换旗舰版,要么改成前后端分离或模板引擎(Thymeleaf、FreeMarker)的方案,后者在现代项目里更常见。
顺带说一个相关现象:用社区版打开一个 Java Web 项目,web.xml可能会被当成普通 XML 文件,Servlet、Filter 的配置项没有专门提示,<url-pattern>写错了也不报错。同样是缺少 Java EE 支持导致的,不是设置问题。看清楚症状属于哪一类,能省下大量在设置里乱翻的时间。
5.4 老系统上安装的特殊情况
如果你的机器还停在 Windows 7,需要提前知道:较新版本的 IDEA 已经不再支持它,官方要求 Windows 10 及以上。装了会直接提示系统不受支持,或者启动后闪退。
可行的做法是退回到还在支持 Win7 的老版本,比如 2021.x 附近的版本。但要有心理准备:这个版本的插件生态已经跟不上了,很多插件的较新版本不再兼容,你在插件市场里搜到的插件可能装不上,必须去下载历史版本。同时新版本 IDEA 带来的性能优化、对新 JDK 的支持你都会错过,JDK 17 以上在这一版上支持不完整。
我的实际建议是,如果这台机器还要用来长期做 Java 开发,把系统升级到 Windows 10 是比折腾老版本更省事的路径。如果只是临时用一台老设备看代码、改个小问题,装个老版本加几个基础插件够用,别指望完整功能。另外老版本 IDEA 不要和系统里已有的新版本共用同一个配置目录,容易冲突,装的时候把idea.properties里的路径改独立。
5.5 网络代理与 AI 插件相关的合规提醒
最后这一条是我觉得比技术问题更重要的。现在不少团队会要求接入 AI 编码助手,或者自己想去装一个试试。这里有两件事必须想清楚。
第一是网络可达性。绝大多数 AI 助手插件需要访问外部服务,公司内网通常有防火墙策略,插件装上之后登录不上、请求超时是常态。排查方式和 5.2 节一样,先配 IDE 的代理,再不行就走离线安装插件本体,但功能本身还是需要网络。如果内网彻底不通,那这个方案在这个环境里就是走不通的,别在代理上耗太久。
第二是代码数据合规。AI 补全类插件在运行时会把当前文件的上下文发到远端做推理,这是它的工作原理。个人项目无所谓,但公司核心业务代码,尤其是涉及数据、算法、客户信息的部分,随手开着这类插件是有风险的。动手之前先问一下团队的合规要求,或者把插件限定在非核心项目里用。这件事没有技术方案能解决,只能靠规则意识。
6. 内存参数调优与长期维护
环境配好了,日常用起来还有两件事值得花十分钟做,能显著提升长期体验:一是把内存参数调对,二是建立一套定期维护的习惯。
6.1 堆内存参数怎么算,给多少合适
IDEA 本身是个 Java 程序,运行在它自带的 JetBrains Runtime 上,堆内存由-Xmx控制。默认值一般偏保守,大概 2048MB 左右,这个值在中小项目上够用,但一旦项目模块多、依赖复杂、索引体积大,就会频繁 GC,表现为界面卡顿、输入延迟、索引慢。
调整入口在Help → Change Memory Settings,填一个数值,重启生效。也可以直接编辑idea64.exe.vmoptions文件(Windows 在bin目录下,用户级配置在%APPDATA%\JetBrains\下),里面能改更多参数。
给多少合适?我的经验公式是:Xmx 约为物理内存的 1/4,但不超过物理内存减去系统和浏览器等常驻程序占用后的余量。具体点:
| 物理内存 | 建议 Xmx | 说明 |
|---|---|---|
| 8GB | 1536 ~ 2048MB | 系统和其他程序要占大头,别贪 |
| 16GB | 3072 ~ 4096MB | 大多数中型项目的舒适区 |
| 32GB | 4096 ~ 8192MB | 大型多模块项目可以往高了给 |
| 64GB 及以上 | 8192 ~ 16384MB | 再高收益递减,除非项目极大 |
这里要纠正一个常见误区:Xmx 不是越大越好。给太大,JVM 启动时预留的地址空间多,垃圾回收的一次停顿时间反而变长,而且会挤压系统和其他程序的内存,极端情况下导致整机卡死。I/O 密集型的索引场景,加内存到一定程度后收益就很小了,真正的瓶颈往往在磁盘随机读写上,所以 SSD 比大内存更重要。
除了 Xmx,还有两个参数值得留意:-XX:ReservedCodeCacheSize控制 JIT 编译后的代码缓存,默认较小,装了大量插件后可能触发 "CodeCache is full" 的警告,可以调到 512MB;-XX:+UseG1GC在新版本里已经是默认,不用手动加。改参数之后如果出现启动失败,把 vmoptions 文件删掉让 IDEA 用默认值重建,比一行行找问题快。
6.2 缓存清理、版本升级与配置备份
IDEA 用久了缓存会膨胀,尤其是频繁切换项目的机器。File → Invalidate Caches / Restart能清缓存,但不会清配置。定期看一眼缓存目录大小,如果涨到十几个 G,可以考虑手动清理,路径在idea.system.path指向的位置。
版本升级有两个注意点。第一,升级前先备份配置目录(idea.config.path指向的位置),万一新版启动异常可以回滚。第二,跨大版本升级后,插件需要逐个更新,有些插件的新版本要等几周才发布,这段时间功能会缺失,所以前面说过别急着追最新大版本。IDEA 可以在Settings → Appearance & Behavior → System Settings → Updates里选择升级通道,切到 Early Access Program 能提前体验新功能,代价是稳定性下降,生产环境别选。
配置备份还有个更轻量的办法:IDEA 支持导出设置。File → Manage IDE Settings → Export Settings可以把快捷键、编辑器设置、插件列表打包成一个 zip。换机器或者重装系统时导入一下,省去全部重新配置的时间。我每次换工作电脑第一件事就是导这个文件,比截图记录一堆设置项靠谱多了。
最后一个实用建议:把常用的运行配置、代码模板(Live Templates)、文件模板也纳入备份范围。Live Templates 里自定义的那些快捷输入(比如输入sout展开成打印语句),才是真正沉淀个人效率的地方,丢了重新想一遍很痛苦。
我自己的习惯是每年做一次环境盘点,把不再用的 JDK 和插件清掉,把内存参数按当年的项目规模重新评估一次。最开始学 Java 的时候觉得装个 IDE 而已,能有多复杂,后来带过几批新人之后才发现,安装配置这一步踩的坑是最多的,因为每个人机器环境都不一样,网上的教程又大多默认你用的是旗舰版。上面这些内容基本都是我在自己和同事的机器上验证过的操作,实测下来按这个顺序走,从下载到跑通第一条请求大概四十分钟。真正花时间的从来不是安装本身,而是遇到报错时不知道该往哪查,把第五章那张速查表存下来,下次再遇到类似的提示,先对照着看一遍,大部分问题五分钟内能定位。