1. 概述
本文将详细介绍如何在 IntelliJ IDEA 项目中切换JDK版本。该方法适用于 IntelliJ 的 Community(社区版) 和 Ultimate(旗舰版) 两款IDE。开发者通常会因以下原因切换JDK版本:
- ✅ 使用新版本Java的语言特性(如 record、switch 模式匹配等)
- ✅ 适配项目或团队的JDK版本规范
- ✅ 升级构建依赖,支持新框架(如Spring Boot 3要求Java 17+)
整个过程简单直接,但有几个关键配置点容易踩坑,下文会一一说明。
2. 通过项目结构设置JDK
IntelliJ 将项目的JDK配置保存在 Project Structure(项目结构) 中。进入该设置有两种方式:
- 菜单路径:
File
→Project Structure
- 快捷键:
- macOS:
⌘ + ;
- Windows/Linux:
Ctrl + Shift + Alt + S
- macOS:
⚠️ 注意:快捷键可能因键盘映射方案不同而变化,可在
Keymap
设置中确认。
成功打开后,会弹出如下对话框:
在 Project SDK 下拉框中,可选择已安装的JDK版本。IntelliJ会自动检测系统中已安装的JDK:
添加新JDK
若所需版本未列出,可点击 New...
→ JDK
,手动指定JDK安装路径,或使用内置下载功能:
该功能支持从 AdoptOpenJDK、Amazon Corretto、Azul Zulu 等主流发行版中直接下载并安装JDK,非常方便。
设置全局默认JDK
为避免每次新建项目都要重复设置,建议配置全局默认JDK:
- 若在欢迎界面:点击
New Projects Setup
→Settings for New Projects...
- 若已有项目打开:
File
→New Projects Setup
→Structure for New Projects
进入后可统一设置默认的 Project SDK 和 Language Level:
✅ 推荐做法:将全局默认JDK设为团队或公司标准版本,提升一致性。
3. 正确设置语言级别(Language Level)
⚠️ 这是一个高频踩坑点!很多开发者只改了SDK却忽略了 Language Level,导致编译报错。
什么是 Language Level?
- 它决定了IDE中可用的语法高亮、代码补全、重构等辅助功能
- 若未显式指定编译目标版本(
target bytecode version
),则默认使用 Language Level 作为编译输出版本 - 该设置位于:
Settings
→Build, Execution, Deployment
→Compiler
→Java Compiler
常见错误示例
假设我们设置:
- Project SDK:Java 17
- Language Level:21
此时编译会报错:
Java: Invalid Source Release: 17
正确做法
✅ Language Level 必须 ≤ Project SDK 版本
修复方式有两种:
- 升级 Project SDK 至 Java 21
- 降级 Language Level 至 17 或以下
以第一种为例,将 SDK 升至 21 后:
错误消失,项目正常编译。
💡 提示:模块化项目中,可为每个 module 单独设置 Language Level,灵活适配不同模块的兼容性需求。
4. 常见陷阱与注意事项
即使IDE中配置正确,仍可能遇到运行时问题。以下是几个容易被忽视的关键点:
❌ 仅改IDE的JDK ≠ 改变命令行JDK
IntelliJ中切换JDK只影响IDE自身的编译和运行环境。当你在终端使用 java
或 javac
命令时,仍由系统环境变量 JAVA_HOME
决定使用哪个JDK。
# 查看当前命令行使用的JDK
java -version
echo $JAVA_HOME
✅ 建议:保持 JAVA_HOME
与项目JDK版本一致,避免混淆。
❌ 不影响构建工具的JVM版本
更改 Project SDK 不会自动改变Maven或Gradle的运行JVM。
- Maven:由
maven.home
或命令行启动JVM决定 - Gradle:由
gradle.properties
中的org.gradle.java.home
或 wrapper 配置决定
示例:强制Gradle使用特定JDK
# gradle.properties
org.gradle.java.home=/Library/Java/JavaVirtualMachines/openjdk-17.jdk/Contents/Home
Maven多版本管理
使用 maven-compiler-plugin
显式指定源码和目标版本:
<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>
✅ 最佳实践:在构建脚本中显式声明Java版本,确保CI/CD和本地环境一致。
5. 总结
本文系统梳理了在 IntelliJ 中切换 Java 版本的核心步骤与常见陷阱:
- ✅ 通过 Project Structure 修改 Project SDK
- ✅ 同步调整 Language Level,确保其 ≤ SDK 版本
- ✅ 推荐配置 全局默认JDK,提升新项目初始化效率
- ✅ 注意:IDE设置 ≠ 命令行JDK ≠ 构建工具JVM
- ✅ 构建脚本中应显式指定Java版本,避免环境差异导致问题
只要记住这几点,切换JDK就是一件简单粗暴又安全的操作。更多细节可参考 JetBrains 官方文档:Project Structure