IntelliJ IDEA 需手动添加已安装的 OpenJDK 才能正常编译运行 Java 代码;必须先在 Platform Settings 中注册 Global SDK,再在 Project Settings 中指定 Project SDK,必要时在 Modules 中单独设置 Module SDK,且各层级依赖关系明确。

IntelliJ IDEA 本身不自带 JDK,必须手动添加已安装的 OpenJDK 才能编译和运行 Java 代码。没添加成功,java.lang.String 就会报红,main() 方法旁也不会出现绿色三角运行图标。
确认 OpenJDK 已正确安装并可被系统识别
这是最容易跳过的一步,但所有后续配置失败的根源往往在这里。
- 打开终端(macOS/Linux)或命令提示符(Windows),执行:
java -version和javac -version - 输出必须显示 OpenJDK 版本(如
openjdk version "17.0.1"),且两个命令结果一致 - 如果报
'java' is not recognized或版本对不上,说明环境变量没配好 —— 此时不要进 IDEA 配置,先回系统里检查JAVA_HOME和Path/PATH是否指向 OpenJDK 的根目录(不是bin子目录) - macOS 用户若用 Homebrew 安装,注意
/opt/homebrew/opt/openjdk@17是软链接路径,IDEA 接受它;但某些旧版 IDEA 可能更认/Library/Java/JavaVirtualMachines/openjdk-17.jdk/Contents/Home
在 IDEA 中注册 Global SDK(必须先做)
IDEA 把 JDK 当作“全局资源”管理,必须先注册进 SDKs 列表,后面项目或模块才选得到。
- 打开
File → Project Structure → Platform Settings → SDKs - 点
+→JDK→ 浏览到 OpenJDK 安装根目录(Windows 示例:C:\Program Files\Java\jdk-17.0.1;macOS 示例:/opt/homebrew/opt/openjdk@17或/Library/Java/JavaVirtualMachines/openjdk-17.jdk/Contents/Home) - 确认右侧显示 “Classpath” 下有
rt.jar(JDK 8)或modules-java.base(JDK 9+),且无红色感叹号 - 名字建议写清楚版本,比如
openjdk-17.0.1,避免和 Oracle JDK 混淆
为当前项目指定 Project SDK
注册完只是“入库”,项目默认仍可能用空 SDK 或旧版本。这步决定整个项目的语言级别、语法高亮和编译行为。
- 仍在
Project Structure窗口中,切换到Project Settings → Project - 在
Project SDK下拉菜单中选择刚才注册好的那个 OpenJDK(如openjdk-17.0.1) - 同步检查
Project language level:它通常自动匹配 JDK 版本(如 JDK 17 对应 Level 17),但如果你用的是 JDK 21 却想写record或sealed,就得手动设成 21,否则编辑器会标黄警告 - 点击
OK保存后,IDEA 会重新索引 —— 等右下角进度条消失,再看String类是否还报红
模块级覆盖(Module SDK)——多版本共存的关键
一个项目里多个模块用不同 JDK?比如 legacy 模块跑在 JDK 8,新模块用 JDK 21?那就得在模块层单独指定,否则统一走 Project SDK。
- 回到
Project Structure → Project Settings → Modules - 左侧选中具体模块(如
myapp-api),右侧切到Dependencies标签页 - 找到
Module SDK,从下拉列表中选另一个已注册的 OpenJDK(如openjdk-8u412) - 注意:这里选了就直接生效,**不继承** Project SDK;但如果留空,才会 fallback 到 Project SDK
- 改完别忘了点
Apply,IDEA 会单独为该模块重载类路径
最常被忽略的是层级关系:Global SDK 是“货架”,Project SDK 是“整店默认”,Module SDK 是“某个柜台特供”。删掉 Global 里的某个 JDK,所有 Project/Module 设置都会立刻变灰不可用 —— 所以别只记得配项目,忘了源头注册。











