如何在 IntelliJ IDEA 中配置多 JDK 版本快速切换?

文章导读
在 IntelliJ IDEA 中管理多 JDK 版本,最稳妥的方式是利用 IDE 内置的 Project Structure 功能,为每个项目或模块独立指定 SDK,而不是反复修改系统环境变量。
📋 目录
  1. 核心配置逻辑
  2. 实操步骤:注册与切换
  3. 构建工具配置同步(关键)
  4. 如何正确验证版本
  5. 常见坑与排查
  6. 参考文档
A A

在 IntelliJ IDEA 中管理多 JDK 版本,最稳妥的方式是利用 IDE 内置的 Project Structure 功能,为每个项目或模块独立指定 SDK,而不是反复修改系统环境变量。

先说结论:IDEA 内置的 SDK 管理功能足以满足多版本切换需求,无需修改系统环境变量,且能实现项目级隔离。

  • 适合:多项目并行开发,不同项目依赖不同 JDK 版本
  • 先看:确认 JDK 安装路径完整,包含 bin 和 lib 目录
  • 建议:同步修改 Maven 或 Gradle 配置文件,避免构建不一致
  • 注意:终端 java -version 显示的是系统环境变量,不代表项目 SDK 版本

核心配置逻辑

IDEA 的 JDK 配置分为三层:全局 SDK 列表、项目 SDK 和模块 SDK。模块 SDK 的优先级最高,如果模块单独指定了版本,会覆盖项目级别的设置。这种分层设计允许同一个工作空间下的不同模块使用不同的 Java 版本,但同时也容易因层级混淆导致编译报错。

实操步骤:注册与切换

第一步:注册 JDK 到 IDEA

打开「File」→「Project Structure」,左侧选择「SDKs」或「Platform Settings」→「SDKs」。点击加号,选择「Add JDK」,浏览到 JDK 安装根目录(注意不是 bin 子目录)。确认右侧类路径能识别到核心包,才算添加成功。

第二步:切换项目默认 SDK

在左侧选择「Project」,右侧「Project SDK」下拉框中选择目标版本。「Language level」建议与 JDK 版本保持一致,例如 JDK 17 选 17。切换版本时,此处下拉框直接选择已注册的 SDK 即可实现快速切换。

第三步:检查模块 SDK(关键)

左侧选择「Modules」,选中具体模块。切换到「Dependencies」标签页,检查「Module SDK」是否继承项目设置(显示为 Project SDK)。如果此处单独指定了版本,会优先生效,需手动改为继承或统一版本。

第四步:清理缓存(切换后建议)

切换 JDK 版本后,若出现莫名报错或索引异常,点击「File」→「Invalidate Caches...」,勾选所有选项并点击「Invalidate and Restart」。这能清除旧版本 JDK 留下的缓存索引。

构建工具配置同步(关键)

IDEA 的项目设置不会自动修改构建配置文件。若不同步,重新导入项目后配置可能被还原。请根据项目类型手动修改:

Maven 项目 (pom.xml)

确保 compiler 插件版本与 JDK 匹配:

如何在 IntelliJ IDEA 中配置多 JDK 版本快速切换?
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.11.0</version>
            <configuration>
                <source>17</source>
                <target>17</target>
            </configuration>
        </plugin>
    </plugins>
</build>

Gradle 项目 (build.gradle)

确保 compatibility 设置正确:

java {
    sourceCompatibility = JavaVersion.VERSION_17
    targetCompatibility = JavaVersion.VERSION_17
}

如何正确验证版本

错误做法:在 IDEA 底部 Terminal 窗口输入 java -version。该命令显示的是操作系统环境变量中的 Java 版本,与 IDEA 项目 SDK 设置无关,会导致误判。

正确做法 1:检查项目结构

打开「File」→「Project Structure」→「Project」,确认「Project SDK」和「Language level」显示为预期版本。

正确做法 2:检查运行配置

点击顶部运行按钮旁边的下拉框,选择「Edit Configurations」。在弹出的窗口中,查看「Build and Run」下的「JRE」选项,确认此处选择的是项目 SDK 而非系统默认。

正确做法 3:代码级验证

尝试使用特定 JDK 版本的新特性(如 JDK 17 的 text block),若编辑器无报错且能正常运行,说明配置生效。

常见坑与排查

1. 模块覆盖项目:只改了项目 SDK 没改模块 SDK,导致模块仍用旧版本编译。务必检查 Modules 面板。

2. 构建工具还原:IDEA 配置改了,但 pom.xml 或 build.gradle 里的版本没改,重新导入项目后配置被还原。

3. 语言级别不匹配:Language Level 低于 JDK 版本,导致新特性无法使用或报错。

4. 终端误导:因 Terminal 显示系统 Java 版本而误认为配置失败,实际编译运行可能正常。

参考文档