IntelliJ IDEA中SDK配置需分三层:Global SDK注册JDK根目录(非JRE),Project SDK设定项目默认版本与语言级别,Module SDK单独覆盖模块级别(优先级最高),三者错配将导致编译异常或语法不生效。

要在IntelliJ IDEA中让多项目、多模块共存且互不干扰,必须厘清Global SDK、Project SDK和Module SDK三者的层级关系与生效优先级——选错一处,轻则编译报错“Unsupported class file major version”,重则Maven刷新后语言级别被覆盖、测试类找不到JDK工具类。
先注册全局JDK:所有配置的起点
打开 File → Project Structure(或按快捷键 Ctrl+Alt+Shift+S),左侧切换至 Platform Settings → SDKs。
点击右上角 + 号 → 选择 JDK → 在文件选择器中定位到你本地已安装的JDK根目录(例如 C:\Program Files\Java\jdk-17.0.2 或 /Library/Java/JavaVirtualMachines/jdk-25.jdk/Contents/Home)。
【必须避开JRE目录】 如果你误选了 jre/ 子目录或仅包含 bin/java 的精简路径,IDEA会识别失败并显示“Invalid JDK path”——它需要的是含 lib/rt.jar(或 lib/modules)、bin/javac 和 jre/ 的完整安装根目录。
确认后,IDEA自动读取版本号(如“JDK 17.0.2”或“JDK 25”),并在SDK列表中显示。可重复此操作添加多个JDK,比如同时注册 JDK 8、JDK 17 和 JDK 25,为不同项目留出切换空间。
设置项目级SDK与语言级别
在同一个 Project Structure 窗口中,左侧切换至 Project Settings → Project。
在 Project SDK 下拉框中,选择你刚注册好的某个JDK(例如“17.0.2”);此时 Project language level 会自动匹配为“17”,但需手动确认——若下拉项灰显,说明所选SDK未正确加载,需返回上一步检查路径。
这一步决定整个项目的默认编译行为:JDK 17 SDK + Language level 17 表示支持 sealed 类、switch 表达式等特性;若设为 Language level 8,则即使SDK是JDK 17,也无法使用任何Java 9+语法,且编译器不会报错,只静默降级——这是很多“代码能写却运行时报错”的根源。
点击 Apply 保存。此时状态栏右下角会实时显示当前项目SDK版本,例如“17.0.2”。
按需配置模块级SDK(多模块项目必做)
当项目含多个模块(如 api、service、common),且其中某个模块需兼容旧系统时,必须单独设置其SDK。
使用 idealista CLI 按位置(城市、城镇、地区、街道)搜索 Idealista 房源并获取详情。适用于用户请求 Idealista 市场数据或需要 idealista‑cli 命令/标志时。
在 Project Structure 中左侧选择 Modules → 展开目标模块(如 legacy-integration)→ 点击右侧 Dependencies 标签页。
找到 Module SDK 下拉框,取消勾选 Inherit project SDK → 从列表中选择另一个已注册的JDK(如“1.8”)。
注意:Maven项目中,该设置可能被 pom.xml 中的 <maven.compiler.source> 和 <maven.compiler.target> 覆盖。若发现IDEA中修改无效,先执行 Right-click project → Maven → Reload project,再检查是否同步。
模块SDK一旦设定,将完全覆盖项目级设置,且优先级最高——这是唯一能让 common 模块用 JDK 17 编译、而 legacy-integration 模块用 JDK 8 编译的可靠方式。
验证配置是否真正生效
新建一个Java类,输入以下代码:
sealed interface Shape permits Circle, Rectangle {}
若无红色波浪线且能正常编译,说明当前模块的SDK与Language level匹配且启用成功;若报错“Sealed classes and interfaces are not supported at language level 8”,说明该模块实际运行在JDK 8模式下,需检查是否误关了 Inherit project SDK 或Maven配置强制降级。
打开终端,执行 mvn compile -X | grep "source",确认输出中 maven-compiler-plugin 使用的 source 和 target 与IDEA中设置一致。
右键运行一个简单 main() 方法,在控制台输出 System.getProperty("java.version"),结果应与状态栏显示的JDK版本完全相同。

















