IntelliJ IDEA 不自带 JDK,必须手动配置已安装的 JDK 路径;未配置会导致新建项目卡在“Project SDK is not defined”、编译报“Cannot resolve symbol 'java.lang.Object'”;需确认本地 JDK 安装路径(macOS/Linux/Windows 各有典型路径),在 Project Structure 中正确添加 JDK 根目录(非 bin 子目录),并同步设置 Module SDK,最后用简单 Main 类验证运行是否正常。

IntelliJ IDEA 本身不自带 JDK,必须手动指定一个已安装的 JDK 才能新建和运行 Java 项目。没配对 JDK,新建项目会卡在 “Project SDK is not defined”,运行时抛 Cannot resolve symbol 'java.lang.Object' 这类错误。
确认本地已安装 JDK 并记下路径
IDEA 不会帮你装 JDK,只负责调用。先在终端执行:
java -version
再查实际安装路径:
-
macOS:通常为
/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home(版本号可能不同) - Windows:类似
C:\Program Files\Java\jdk-21,注意路径中不能有中文或空格 - Linux:常用
/usr/lib/jvm/java-17-openjdk-amd64或通过update-alternatives --config java查看
如果没装,去 Eclipse Temurin 或 Oracle JDK 下载安装,别用 JRE。
立即学习“Java免费学习笔记(深入)”;
在 IDEA 中配置 Project SDK(不是 Plugin SDK)
打开 IDEA 后,不要直接点 “Create New Project” —— 先进设置再建项目更稳:
- 首次启动:点 Configure → Project Defaults → Project Structure → Project → Project SDK → Add JDK…
- 已有项目:File → Project Structure → Project → Project SDK → Add JDK…
- 点击
Add JDK…后,浏览并选中你刚才记下的 JDK 根目录(即含bin/、lib/的那一层),不是bin子目录 - 确认后,
Project language level会自动匹配(如 JDK 17 → 17),一般不用改;若要支持新语法(如 record、sealed),确保它 ≥ 源码使用的版本
此时 Project SDK 下拉框应显示类似 17 (home: /path/to/jdk-17),才算成功。
新建项目时仍提示 “No SDK”?检查 Module SDK 是否同步
即使 Project SDK 配好了,新建模块(Module)时可能默认为空,导致编译失败:
- 新建项目向导里,在 “Additional Libraries and Frameworks” 页面之后,会进入 “Project Settings” 步骤 —— 这里有个独立的
Project SDK下拉框,务必手动选中你刚配好的 JDK - 创建完项目,右键
src→ Mark Directory as → Sources Root,否则 IDEA 不识别 Java 文件 - 如果已有模块报红,右键模块名 → Open Module Settings → Modules → Dependencies → Module SDK,选同个 JDK
- 检查
.idea/misc.xml里是否有块,其project-jdk-name应非空
常见陷阱:JDK 选错、PATH 冲突、权限或符号链接问题
这些不会报明显错误,但会导致运行时异常或调试断点不生效:
- 误选了 JRE 路径(如
.../jre)或jdk/bin目录 —— IDEA 会静默忽略,新建项目仍无 SDK - 系统
PATH指向旧 JDK(如java -version显示 8,但 IDEA 里选的是 17)—— 不影响 IDEA 自身,但 Terminal 插件或外部脚本可能出错 - macOS 上用 Homebrew 安装的 JDK(如
openjdk@17)常是符号链接,IDEA 有时读取失败;建议用readlink -f $(which java)解出真实路径再填 - Windows 用户若 JDK 装在 OneDrive 或带特殊权限的目录下,IDEA 可能无法读取
rt.jar或modules.jsa,换到C:\dev\jdk-17类路径更稳妥
最省事的验证方式:新建一个 class Main { public static void main(String[] args) { System.out.println("OK"); } },能正常运行并输出,就说明 JDK 链路通了。其他插件、Maven、Gradle 都是后续叠加项,别一上来就折腾。










