如果你手头还有一台配置不算高的老机器,或者某个历史项目一直锁死在旧版本依赖上,那你大概率会翻到这篇文章。我第一次接触 IntelliJ IDEA 2017.3 x64 是在2018年初,那时 Spring Boot 刚火起来,身边不少同事还在 Eclipse 里挣扎,IDEA 给人的第一印象就是三个字:重、快、香。启动慢是真的慢,但用顺手之后极少有人愿意换回去。2017.3 这个版本正好是 IDEA 从“小众神器”走向“Java 开发主流 IDE”的分水岭,它没有后来版本的花哨功能,但胜在稳定、占用相对可控,对老项目和传统 JavaWeb 开发完全够用。
这篇文章不是官方文档的翻译,而是我自己从下载、安装、配置到跑起一个 JavaWeb 项目的完整过程记录。我会把安装向导里每个选项的含义、JDK 版本怎么搭、首次启动该做哪些设置、社区版和旗舰版在 JavaWeb 功能上的差异、还有乱码和卡顿这类高频问题都讲清楚。适合三类人看:刚接触 IDEA 的初学者、因为老项目被迫继续使用旧版 IDE 的开发者、以及想给低配机器找一套轻量开发方案的人。
1. 为什么还在装2017.3:这个版本的定位与选型逻辑
1.1 2017.3 到底能干什么
先说结论:IDEA 2017.3 是一个成熟度非常高的版本,它覆盖了 Java 开发日常所需的大部分能力,包括代码补全、重构、版本控制、Maven/Gradle 支持、调试器、数据库工具等。这个版本发布于 2017 年 11 月,核心亮点是完整支持了当时刚发布的 Java 9 模块化特性,而且内置了对 Spring、Spring Boot、MyBatis 等主流框架的智能提示与跳转支持。
我自己在 2023 年还帮一个朋友在他的旧笔记本上装过这个版本,那个笔记本是 8GB 内存、机械硬盘,跑新版 IDEA 卡得没法看,但 2017.3 勉强能流畅运行。对于学习 Java SE、写 Servlet/JSP 练习、做毕业设计这类场景,2017.3 完全够用,你不需要为了一行代码提示去追最新版。
这个版本在 JavaWeb 方面有个硬性限制:社区版(Community)不支持 Tomcat 集成、不支持 JavaEE 相关工具,只有旗舰版(Ultimate)才提供Run Tomcat的运行配置入口。所以如果你是做 JavaWeb 项目而且不想折腾手动部署,请务必要用旗舰版,或者准备好接受“写代码用 IDEA、启动服务用 Tomcat 脚本”这种双轨制工作流。
1.2 它和2023/2025新版的差距在哪
很多人在热搜词里搜“IDEA 2026 怎么配置 springboot 服务”“IDEA 2025 总是cpu飙高卡死”,说明大家其实更关心新版的使用问题。但选 2017.3 的人,图的就是不卡。用一个表来说明新旧版本的取舍:
| 对比维度 | IDEA 2017.3 | IDEA 2023+ |
|---|---|---|
| 最低内存要求 | 2GB,4GB 可用 | 4GB,推荐 8GB+ |
| 启动速度(机械硬盘) | 大约 20-40 秒 | 大约 1-3 分钟(第一次索引更久) |
| Java 支持范围 | Java 6-9 | Java 8-21 甚至更高 |
| 内置终端外观 | 较老,但可用 | 更好用,支持颜色主题更丰富 |
| 插件市场兼容性 | 部分新插件无法安装 | 支持所有新插件 |
| 对低配电脑友好度 | 高 | 低 |
如果你只是写普通 Java 项目、Servlet/JSP、Spring MVC,2017.3 没有任何功能短板。但如果你要开发 Spring Boot 3.x 或者用 Jakarta EE 9 以上规范,那 2017.3 由于内置框架版本太旧,识别会出错,这时候就必须要升级 IDE 了。选型逻辑很简单:项目选型跟着 JDK 框架走,IDE 选型跟着机器配置走。老机器 + 老项目 = 2017.3 很合适;新机器 + 新框架 = 老老实实装新版。
1.3 什么情况下选它更合理
这里我总结几条实操判断标准:
- 内存小于 8GB,风扇容易起飞,新版 IDEA 一打开就 CPU 飙高的,请选 2017.3。
- 公司内网项目依赖依旧是 J2EE 规范、Spring 4 或 5 以下、JDK 8 的,2017.3 完全兜得住。
- 日常只写算法题、刷 LeetCode、做 Java SE 课后作业,社区版加 2017.3 是低成本方案。
- 需要完整 JavaWeb 开发,预算有限但想用 IDEA 的,可以考虑搞一个旗舰版授权,也可以用社区版配合外部 Tomcat 启动脚本,但不推荐。
我必须提醒一句:不要碰网上那些“完美激活码”“破解版安装教程 2022/2023/2024”的东西。我见过太多人因为下了带后门的修改版,第二天 Git 密钥被上传、代码被加密勒索。IDEA 社区版本来就是免费开源的,旗舰版也有 30 天试用期,个人学习完全够用。为了省几百块钱把整个开发环境暴露在风险里,真的不划算。
2. 安装前的环境准备:JDK版本、下载渠道与系统要求
2.1 JDK版本怎么配(重点讲JDK 8)
IDEA 2017.3 自身内置了一个 JRE,但它只是用来运行 IDE 本身的,和你编译 Java 代码用的 JDK 不是一回事。安装前你需要单独准备一个 JDK。
我的建议是装JDK 8,也就是 8u202 或更高的小版本。原因很简单:2017.3 发布时 Java 9 刚出,很多第三方库还没有适配 Java 9,而 Java 8 是当年绝对的主流。用 JDK 8 搭配 IDEA 2017.3,兼容性最稳,编译、运行、断点调试都不会遇到奇奇怪怪的“模块访问限制”问题。
JDK 安装完之后一定要配环境变量,否则 IDEA 虽然能识别到你选的 JDK 路径,但命令行工具或 Maven 脚本会报“JAVA_HOME not found”。Windows 上这样配:
- 右键“此电脑/我的电脑” → 属性 → 高级系统设置 → 环境变量。
- 新建系统变量
JAVA_HOME,值填 JDK 安装目录,例如C:\Program Files\Java\jdk1.8.0_202。 - 编辑
Path,新增一行%JAVA_HOME%\bin。 - 打开命令行,输入
java -version和javac -version,看到版本信息就说明配好了。
这个步骤虽然基础,但真有很多人栽在上面。尤其是从 Gitee 或 GitHub 拉取项目到 IDEA 之后,项目报错 “Error: java: 无效的源发行版”,八成就是 IDEA 里 Project SDK 选错,或者本机 JAVA_HOME 指向了太新的 JDK 版本。
2.2 官方渠道下载安装包
IDEA 2017.3 的官方下载页面现在已经不好找了,因为 JetBrains 官网上只会保留最近两三个主版本的下载入口。但你仍然可以通过官网底部的“Other Versions”页面找到归档列表。搜索IntelliJ IDEA older versions就能进到历史版本页面,里面按年份排列出 2017.3、2018.1、2018.2 等版本。
下载时认准两点:操作系统选 Windows,架构选 x86_64(也就是 x64),不要下载 32 位版本。2017.3 的 Windows 安装包大概在 400MB 左右,文件名为ideaIU-2017.3.6.exe(旗舰版)或ideaIC-2017.3.6.exe(社区版)。如果你在非官方渠道看到“绿色版”“免安装版”,我劝你直接退出,宁可花十分钟下载官方包,也不要冒着文件被植入风险去省这几分钟。
顺便说明一下 2017.3 的小版本:2017.3.1、2017.3.2 一直到 2017.3.6,都是修复性更新,越靠后的版本越稳定。建议直接下最后一个 2017.3.6。
2.3 系统要求与x64版本的选择依据
IDEA 2017.3 x64 的系统要求是:Windows 7/10 64 位、内存至少 2GB(推荐 4GB)、磁盘剩余空间至少 3GB、显示器分辨率不低于 1024×768。说实话这个要求很低,十年前的老办公电脑也能跑。
选择 x64 版本的理由有两层:第一,现代 Windows 系统绝大多数都是 64 位,32 位安装包在这种系统上反而需要额外兼容层;第二,IDEA 本身是内存大户,64 位进程可以申请更大的堆内存,给 JVM 分配 2GB 堆空间也不会有问题。你要是装 32 位版本,进程内存上限被压在 2GB 内,跑稍微大一点的项目就会频繁爆出 “OutOfMemoryError: Java heap space”。
这里有个细节:安装包下载的是 x64 版本,但安装完成后你会发现安装目录的bin文件夹里有两个启动脚本——idea.exe和idea64.exe。快捷方式默认指向 64 位版本,如果你不小心双击了 32 位的那个,可能无法启动或启动后提示 “Cannot load a 64-bit JVM”。遇到这个情况别慌,直接换用idea64.exe就好了。
3. 一步步完成安装:从双击exe到首次启动
3.1 安装向导里的每个选项都代表什么
双击安装包之后,前几步没什么好说的,选好安装路径就行。我个人的习惯是不要装在 C 盘默认路径,而是改成D:\JetBrains\IntelliJ IDEA 2017.3,这样做的好处是:重装系统不丢配置,而且固态硬盘空间紧张时不会因为 IDE 缓存撑爆 C 盘。注意路径里不要带中文,某些老版本插件对中文路径支持不好,容易出“无法加载插件”或者“找不到配置文件”的玄学错误。
再往下走到安装选项页,有这么几项,我逐个解释一下:
64-bit launcher:在桌面创建 64 位启动器快捷方式,默认勾选,建议保留。Update PATH variables (restart needed):把 IDEA 的启动命令加入系统 PATH。这个我一般不勾,因为日常很少在命令行里敲idea启动,而且改了 PATH 要重启系统才生效,没必要麻烦。Create Associations:关联.java、.groovy、.kt文件。建议全选。这样双击一个.java文件就能直接用 IDEA 打开,体验接近专业文本编辑器。Download JBR或者Install JRE(不同小版本显示不同):这是询问是否下载 JetBrains Runtime。2017.3 的安装包一般自带 JRE,如果提示你额外下载,建议下载,因为后面运行 IDEA 需要它。
选完之后点安装,等进度条走完,勾选Run IntelliJ IDEA那一步不要急着继续,先想好你要不要导入旧配置。如果你电脑上从没装过 IDEA,会直接进入新配置界面;如果装过其他版本,安装器会问你是否导入。我的建议是:第一次尝试这个版本,选“Do not import settings”开始全新配置。这样你后面的每一步设置都能自己掌控,不会出现“该 GUI 主题是上一个版本遗留”“插件不兼容导致无法初始化”这类问题。
3.2 IDE内存参数与VMoptions预配置
安装完成后,先别急着打开写代码。我强烈建议你先把 IDEA 的内存参数改好,再启动。说白了,IDEA 是基于 JVM 的程序,它自己有独立的堆内存配置,默认值往往过于保守,遇到大项目就频繁 GC 导致卡顿,这也就是很多人说的“IDEA 卡得跟幻灯片一样”。2017.3 的配置文件在安装目录下的bin\idea64.exe.vmoptions文件里。
我常用的一个低配方案是:
-Xms256m -Xmx1024m -XX:ReservedCodeCacheSize=240m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -Djsse.enableSNIExtension=true -Didea.vm.name=idea64如果你内存比较大,比如 8GB 以上,可以把-Xmx调到 2048m,再往高调其实收益不大,反而挤占了操作系统缓存。这个老版本用 CMS 垃圾回收器比默认的 G1 更稳,启动速度也更快。注意改这个文件必须以管理员身份保存,Windows 下文件在Program Files目录里,直接在资源管理器里打开编辑往往保存失败。
这里有个常见误区:改了idea64.exe.vmoptions还是卡,很多人会去装各种“优化插件”,但真正的问题往往是你同时打开了多个大项目,或者项目索引没建完就在写代码。2017.3 首次导入项目时会花几分钟建立索引,这时候 CPU 占用高、卡顿都是正常的,等索引完成就流畅了。不要用任务管理器看一眼就把 IDEA 杀掉,容易损坏索引文件,导致后续打开项目反复重建索引。
3.3 首次启动:导入配置、主题与插件初始化
配置好内存,双击idea64.exe,这时候会进入首次启动向导。它会依次问你三件事:是否导入设置、选择主题、是否启用插件。
主题我建议选Darcula,也就是深色主题。长时间写代码时深色主题对眼睛刺激更小,而且这个配色是 IDEA 的标志性外观,很多编辑器都抄了它。后面的Create Desktop Shortcut保持勾选,Download Featured Plugins那个页面不要急着全选,2017.3 的插件市场里部分插件已经停止维护,装上反而添乱,直接点Skip All跳过,需要的插件后面按需单独装。
2017.3 的插件市场目前还残留了不少经典插件,比如.ignore、Lombok Plugin、Alibaba Java Coding Guidelines(阿里规约)。记住一点:插件安装尽量保持克制。装多了不但拖慢启动速度,还会造成右键菜单臃肿,甚至引发插件间冲突导致整个 IDE 白屏。我的原则是,开发 Java 项目只装 Lombok 和必要的框架插件,其他一律按需安装。
4. 终于开始写代码:新建项目、界面布局与核心快捷键
4.1 新建Java项目与Project SDK配置
打开 IDEA 后,第一个要面对的就是创建或导入项目。新建项目很简单:File → New → Project。左边选 Java,然后在Project SDK处点New,找到你安装的 JDK 目录。如果 SDK 列表里什么都没有,大概率是你只装了 JRE 而没装 JDK,或者路径选错了——这点我见过太多次,装了个精简版 JRE 就以为能开发,结果写javac的时候一脸懵。
选好 JDK 后还要选模板。如果你是纯 Java 项目,不要勾选Create project from template,直接点Next。勾选模板有时候会生成多余的Main类框架和模块信息文件,对于初学者反而是负担。项目名和保存路径自己定,注意路径别带中文和空格。最后建立好项目,你会看到 IDEA 自动生成了一个.idea目录,里面是 IDE 的本地配置,不要手贱去删它,删了 IDEA 无法识别项目结构。
创建完成后点开Project Structure(快捷键Ctrl+Shift+Alt+S),在Project栏目里核对Project SDK和Project language level。这里有个很容易踩的坑:language level 设置成 8,表示项目可以使用 Java 8 的语法;如果你把 SDK 选了 JDK 17,但 language level 还是 8,那某些新语法(比如var)代码会直接标红,编译也是报错的。2017.3 最多只认识到 Java 9 的 language level,所以使用这个版本时直接选 8 就好。
4.2 界面布局和几个你一定会用到的工具窗口
搞定了项目,界面会比较陌生。IDEA 2017.3 的默认布局分四块:左侧是 Project 文件树,右侧是代码编辑区,顶部是导航栏和工具按钮,底部是终端、信息、TODO、版本控制等工具窗口的折叠条。
有几个工具窗口我建议你一上来就熟悉:
Project(默认Alt+1切换):看文件和包结构。Structure(默认Alt+7):看当前类的字段和方法大纲,跳转特别方便,我写老代码找方法时全靠它。Terminal(默认Alt+F12):内置命令行,不用切到外面敲 maven 命令。Version Control(默认Alt+9):Git/SVN 提交记录都在这里。
你在网上可能会看到有人用很多奇奇怪怪的“超级高效布局”教程,什么窗口都往屏幕边缘放。我觉得对大多数人来说,默认布局不乱动就足够了,工具窗口按快捷键呼出和收起,比永远钉在界面上清爽得多。保持工具窗口弹出即用、用完即收,你的视野能留给代码本身的面积更大。
4.3 高频快捷键与代码生成模板
快捷键这种东西,记住核心的十来个就能横行无忌了。2017.3 的快捷键和后来的版本基本一致,如果你是从新版回退到旧版,这部分的肌肉记忆还能用:
| 操作 | 快捷键 | 说明 |
|---|---|---|
| 生成代码 / 构造方法 / setter | Alt+Insert | 神器,不用手敲 getter/setter |
| 快速修复 | Alt+Enter | 红波浪线时按它,补目标导包、改方法名都靠它 |
| 格式化代码 | Ctrl+Alt+L | 统一缩进和空格,符合团队规范 |
| 查找类 | Ctrl+N | 按类名搜,跳转飞快 |
| 查找文件 | Ctrl+Shift+N | 按文件名搜 |
| 查找使用处 | Alt+F7 | 看一个方法被谁调用了,重构前必做 |
| 重命名 | Shift+F6 | 方法、变量、类统一改名,强烈推荐 |
| 提取变量 | Ctrl+Alt+V | 把魔法值抽成变量,提升可读性 |
| 运行当前类 | Shift+F10 | 不用手动找运行按钮 |
| 补全变量名 | Ctrl+Shift+Enter | 自动补全代码行尾的分号和大括号 |
代码模板方面,2017.3 默认带了一堆 Live Templates,输入缩写后按Tab展开。比如在 main 方法里输入psvm就会生成public static void main(String[] args);在控制台打印输入sout生成System.out.println();增强 for 循环输入iter按 Tab,可以自动生成一个 Foreach。这些模板在Settings → Editor → Live Templates里都能看到,你也可以自己定义。
我自己的习惯是把平时经常写的log日志打印模板改成一个固定缩写,比如输入logd生成LoggerFactory.getLogger(getClass()),每次导入新代码库都能省很多事。老版本支持自定义模板,完全不需要为了这么个功能去装插件。
5. JavaWeb项目配置实战:Tomcat、Maven与常见坑
5.1 社区版和旗舰版在JavaWeb支持上的区别
这是很多人最关心的部分。IDEA 2017.3 社区版是免费开源的,但它的功能边界非常明确:只支持 Java SE、JUnit、Maven/Gradle、Git/SVN 等基础功能,不包含 JavaEE、Spring、Tomcat 集成的完整支持。具体到 JavaWeb 场景,社区版里你找不到Run → Edit Configurations → Tomcat Server这个入口。
旗舰版则在安装时就集成了 Application Servers 视图,你可以直接配置 Tomcat 的路径,然后用一个按钮启动/停止服务器。它对 Spring、MyBatis、JSP/Servlet 都有代码补全和文件跳转支持。如果你要整天写 JavaWeb,这两个功能的差距是本质性的。
如果你暂时只能用社区版,也不是没救。你可以把项目打成 WAR 包,手动复制到 Tomcat 的webapps目录,再通过 Tomcat 的bin\startup.bat启动。这种方式麻烦,但能加深你对部署过程的理解,对学习阶段的学生来说反而是个好实践。后来用旗舰版再回头看这些步骤,你会更明白 IDEA 帮你做了什么。
5.2 Maven项目导入与仓库配置
从 Gitee 或 GitHub 拉取项目到 IDEA,最常见的方式有两种:一种是File → New → Project from Version Control,粘贴 Git 地址直接克隆;另一种是本地已经有项目文件夹,用File → Open选择带pom.xml的根目录,IDEA 会识别 Maven 项目并自动下载依赖。
2017.3 对 Maven 的支持已经很成熟了。项目导入后,右侧会有一个Maven Projects工具窗口,里面能看到模块列表和依赖树。这一步有极大概率遇到问题:国内网络访问 Maven 中央仓库慢,下载依赖一半卡死,然后 IDEA 报各种 “Cannot resolve xxx” 的错。
解决方法是换阿里云镜像。打开 Maven 的conf\settings.xml,在<mirrors>节点里加上:
<mirror> <id>aliyunmaven</id> <mirrorOf>central</mirrorOf> <name>aliyun public mirror</name> <url>https://maven.aliyun.com/repository/public</url> </mirror>然后在 IDEA 的Settings → Build, Execution, Deployment → Build Tools → Maven里,把User settings file指向这个settings.xml。如果项目依赖还是下载不下来,建议检查settings.xml里的本地仓库路径是否包含中文,IDEA 对中文路径下的 Maven 仓库支持一直不稳定,报的错还经常是莫名其妙的 “Unresolved plugin”。
5.3 Tomcat运行配置与热部署
用旗舰版配置 Tomcat 的步骤很固定:Run → Edit Configurations,点左上角加号,找到Tomcat Server → Local。在Server标签页的Application server处点Configure,选择你的 Tomcat 安装目录。Server页的After Launch默认勾选,会在启动成功后自动打开浏览器访问首页。Deployment标签页点加号,选择Artifact里的 war 包或 exploded war 包。
这里有个非常关键的细节:部署方式选exploded war还是war。前者会把项目按目录结构展开部署,可以支持 JSP 和静态资源的实时更新,也就是所谓的热部署;后者则是完整的压缩包,每次改代码都要重新打包。日常开发一定选 exploded,IDE 才能在修改后快速同步文件到 Tomcat 目录。改完 Java 代码后,浏览器里刷新页面或者按Ctrl+F10(Update resources)就能看到效果,不需要重启 Tomcat。
如果改了 Java 方法签名、新增了类,记得把On frame deactivation设为Update classes and resources,这样当 IDEA 窗口失焦时它后台会自动编译同步。实测下来老版本的自动编译没有新版快,但也不至于拖慢节奏。别贪图频繁的完全重启,重启次数多了你会明显感觉整个开发体验像回到远古时代。
5.4 运行调试中的常见问题
JavaWeb 项目调试是排查问题的关键手段。2017.3 的断点调试和现在版本差别不大:在代码行号左侧点一下就打个断点,然后用Debug模式运行,程序执行到断点处会自动停下来,你可以查看变量值、调用栈,甚至直接选中一个表达式按Alt+F8求值。
这里我要专门讲一个细节:断点可以拖动。热搜词里有一条是“IDEA java 断点拖动到指定位置,忽略不需要的步骤”,这指的是你可以在调试会话中,把当前断点标记拖到一个新行,跳过中间的几个步骤。老版本实现方式是在调试工具栏的Frames面板里选中当前栈帧,然后把左侧的断点标记拖到你希望执行的下一行。这个方法在处理循环体内重复代码调试时特别好用,不需要改源码就能跳过脏数据引起的报错。
调试环节最常见的坑是 Tomcat 启动时报端口被占用。如果8080或8005被已有进程占用,Tomcat 会启动失败并抛BindException。解决办法是找到占用端口的程序,或者直接改 Tomcat 的conf\server.xml里的端口号,IDEA 运行配置里也可以单独指定不同端口。我就是因为这台老电脑上 8080 被一堆杂七杂八的服务占了,后来干脆在 IDEA 里把 Tomcat 的端口设成18080,项目配置里的访问地址同步改掉,从此再也没有跟别人抢过端口。
6. 踩坑记录:乱码、卡顿、target目录不显示等高频问题排查
6.1 中文乱码与文件编码统一
在 JavaWeb 项目里,乱码一般分两种:控制台乱码和页面乱码。2017.3 里控制台乱码多半是因为控制台编码和项目编码不一致。你需要做三件事:
Settings → Editor → File Encodings里把Global Encoding和Project Encoding都设为 UTF-8,Default encoding for properties files也改成 UTF-8。- 检查项目里的
pom.xml是否设置了project.build.sourceEncoding为 UTF-8,没有就加上。 - 如果 Tomcat 日志有乱码,还要看 IDEA 运行配置里的
VM options是否加了-Dfile.encoding=UTF-8。
我遇到过一种很隐蔽的情况:IDEA 里看代码文件全是正常的 UTF-8,但编译后运行时的日志或页面乱码,后来发现是 Tomcat 安装目录的conf\logging.properties里java.util.logging.ConsoleHandler.encoding默认是 GBK。把这一行改成 UTF-8 再重启就好。这类问题本质上是“编码源头错”而不是“IDE 错”,排查时不只要盯着项目本身,还要把运行的容器也查一遍。
6.2 用vmoptions解决内存不足与卡顿
前面说过bin\idea64.exe.vmoptions这个文件,这里再详细讲讲卡顿的排查思路。先说现象:打开项目后 IDEA 响应缓慢,输入代码时高亮卡顿,滚动代码像拉锯。如果你用的是 2017.3 且配置不差,八成是索引一直在后台跑。
2017.3 的索引机制比新版简单,但导入大项目时仍然会全量扫描目录。如果你的项目里有一个node_modules或者target目录,IDEA 默认会尝试建立索引,这就非常浪费。解决办法是右键这些目录,选择Mark Directory as → Excluded,把不需要索引的目录排除掉。被排除的目录在文件树里会显示为可隐藏状态,不会被搜索和索引。
如果你已经加了-Xmx2048m还是卡,可以检查是否安装了太多无用的插件。在Settings → Plugins里把不需要的插件直接禁用,禁用后 IDE 启动速度和内存占用都能明显改善。2017.3 的插件市场里有大量旧插件,装了之后不一定报错,但会在后台监听各种事件,白白消耗 CPU。
6.3 target目录明明存在却不显示
热搜词里有一条很典型:“IDEA 为什么不显示 target 目录,但是是存在的”。这个问题的本质不是 target 不存在,而是 IDEA 把 target 目录标记为 excluded,导致它在 Project 树中被隐藏。正常情况下这不影响编译,因为 Maven 构建时编译器会自己往 target 里输出 .class 文件。但如果你要查看打包出来的文件,却发现左侧文件树里找不到它,就很别扭。
解决办法有三种:
- 在 Project 视图的文件树上方找到那个齿轮图标,展开后勾选
Show Excluded Files,被排除目录就会以半透明底色显示出来。 - 右键 target 目录 →
Mark Directory as → Not Excluded,彻底取消排除状态。 - 如果上面两个都不行,大概率是 IDE 缓存出错了。执行
File → Invalidate Caches / Restart,勾选Clear file system cache and Local History后重启,让 IDEA 重新扫描目录结构。
这个问题的坑在于,IDEA 默认排除 target 是有意为之的:它不想让你把编译产物当成源码来检索。所以只要你能通过文件管理器访问到 target 里的内容,IDE 里不显示就没必要非得改。如果你想看打包后的 WAR 包是否生成完整,直接去项目目录下的target文件夹看,或者用文件管理器都可以。
6.4 代码格式化失效与格式化范围控制
“IDEA 代码格式化失效”也是高频搜索词,常见原因有三类:第一,文件被标记为只读,比如从版本控制拉取的文件没有写入权限;第二,项目里配置了 EditorConfig 文件,Settings → Editor → Code Style里的部分选项被.editorconfig覆盖了;第三,格式化时机不对,2017.3 里默认用Ctrl+Alt+L格式化整个文件,如果你光标选中了一段代码,它只格式化选中部分,很多人以为失效了,其实是范围变小了。
针对这个问题,我建议打开Settings → Editor → Code Style → Java,在最上面的Scheme里选一个默认方案。如果你团队里没有统一规范,直接用默认方案就行,不要频繁修改缩进和空格规则,否则格式化后 diff 会刷出来一大堆无意义的变更记录,严重影响 Code Review。万一真的被.editorconfig干扰了,可以在项目根目录找到.editorconfig文件,删除或修改里面和缩进/换行相关的规则。
格式化失效还有一个容易被忽略的原因:Ctrl+Alt+L这个全局快捷键在某些输入法或录屏软件里被占用了。我遇到过因为按键绑定冲突导致格式化完全没有反应的情况,打开File → Settings → Keymap搜索 “Reformat Code”,看看它的快捷键是否显示为Ctrl+Alt+L,如果不是或者显示冲突,就重新绑定。这个方法也适用于其他快捷键“失灵”的问题。
6.5 版本控制、数据库与远程调试的边角问题
最后把搜热词里几个边角问题一起收尾。一个是 Git 拉取项目报 “login failed, GitLab versions older than 14.0 are not supported”,这是新版 Git 插件对旧版 GitLab 服务端的兼容性限制。IDEA 2017.3 内置的 Git 插件反而没有这个限制,因为那个时代 GitLab 都还是 8、9 的时代。如果你在新版 IDEA 上遇到这个报错,可以考虑关闭新版 IDEA 内置 GitLab 集成,改用 Git 命令行认证;或者干脆用 2017.3 处理旧 GitLab 服务器。
另一个是“IDEA 打包 docker 镜像”。2017.3 的 Docker 集成其实已经存在,在Settings → Build, Execution, Deployment → Docker里配置 Docker 连接,然后把项目部署到容器。但老版本的 Docker 功能非常初级,只支持简单的镜像构建和运维,不支持像新版那样的 Compose 支持。实际工作中我觉得老版本真没必要硬刚 Docker,写代码时把 Dockerfile 放在项目里,用命令行构建镜像反而更顺手。
还有一个数据库脚本导出问题:2017.3 的 Database 工具窗口功能比较基础,你可以连接数据库、看表结构、执行 SQL,但要“导出数据库脚本”,最稳妥的方式是用命令行工具mysqldump或者可视化工具如 Navicat 导出,不要指望 IDE 给你完整搞定。这个版本的 Database 功能定位就是查询和简单编辑,不是专业的数据库运维工具。
收尾:我用了这么多年IDEA,最后的体会
说白了,IDEA 2017.3 x64 在我心里就像一把用惯了的旧螺丝刀:不是最新款,也没有高科技涂层加持,但只要你拿它拧老项目的那几颗螺丝,它反而比新款更趁手——因为它更简单、更不吃资源、没有那么多花里胡哨的后台任务来抢你电脑的注意力。
如果你是为了学习编程来装这个版本,我建议你把快捷键练熟、把 Debug 玩明白、把 Maven 依赖流搞懂,这些基础能力在哪个版本的 IDE 上都是通用的。如果你是被老项目绑着只能用旧版本,那就少折腾花活,把它稳定地跑起来,配合命令行工具处理那些 IDE 管不了的事情,效率一样很高。不要为了“用新版”而用新版,也不要为了“怀旧”死守旧版,选合适自己电脑和项目的工具,比什么都重要。