✅ IDEA 项目中使用哪个 JDK,是由以下几部分共同决定的:
阶段 | 决定因素 | 举例 |
---|---|---|
项目编译(编译器) | IDEA 设置的 Project SDK 和模块 SDK | Project Structure → Project / Modules 中配置的 JDK |
Maven 构建 | Maven 使用的 JDK(即 Maven 的 JAVA_HOME 环境变量) | mvn -v 看的是哪个 JDK |
Java 源码兼容性(编译目标) | pom.xml 中设置的 <maven.compiler.source> 和 <target> | 决定生成的 class 文件兼容哪个 JDK 版本 |
程序运行 | 运行配置中设置的 JDK(Run Configuration) | IDEA 里每个 Main class 的运行设置 |
🧠 所以答案是:
✅ IDEA 和 Maven 的 JDK 都有影响,但:
- 最终使用的 JDK 是你在哪个地方运行的决定的
- 而生成的 class 文件兼容性,是由 Maven 中
<source>/<target>
决定的
🛠 举例说明
情况 1:你点击 IDEA 的绿色运行按钮
- IDEA 使用
Project Structure → Project SDK
设置的 JDK 来运行。 - 如果你设置了 JDK 17,就会用它来运行(和 Maven 无关)。
情况 2:你用 mvn compile
构建项目
-
Maven 使用系统环境变量
JAVA_HOME
或 IDEA 设置的 Maven JDK。 -
mvn -v
可以查看当前 Maven 用的 JDK:mvn -v
情况 3:你用的是 profile(如 -P jdk-1.8
)
- 决定了
<source>
/<target>
,即 class 文件是否兼容 1.8,但不影响真正用哪个 JDK 运行。
✅ 检查步骤(建议)
IDEA 设置检查:
-
Project SDK 设置:
File → Project Structure → Project → Project SDK
-
模块 SDK 设置:
Project Structure → Modules → 使用的 SDK
-
运行配置 JDK:
Run → Edit Configurations → JDK
-
Maven 构建用的 JDK:
File → Settings → Build Tools → Maven → Runner → JDK
🔍 检查当前 Maven 使用哪个 JDK:
在终端运行:
mvn -v
输出类似:
Apache Maven 3.9.3
Java version: 1.8.0_241, vendor: Oracle Corporation
Java home: D:\Software\Java\jdk1.8.0_241
✅ 最推荐的统一做法
设置 | 推荐配置 |
---|---|
IDEA 项目 JDK | JDK 17(长期支持) |
Maven JAVA_HOME | 指向同一个 JDK 17 |
pom.xml | 设置 <source> /<target> 为 17 |
Maven Profile | 可选,如果要支持多版本构建 |
所有插件(如 Lombok) | 兼容 JDK 17 的版本 |
🎯 总结一句话:
IDEA 的 JDK 决定“你在开发和运行时使用哪个 JDK”,Maven 的配置决定“你的 class 文件编译成哪个版本的兼容格式”,两者都重要,建议统一为同一个 JDK 版本(如 JDK 17)避免混乱。
需要我帮你一步步配置 IDEA 使用 JDK 17 吗?可以提供你操作系统(Windows/macOS)我来图解。