✅ 1. Project Settings → Modules
中的 JDK
-
✅ 这是每个模块实际编译源码时使用的 JDK。
-
IDEA 用这个 JDK 来进行:
- Java 代码编译(IDE 内部)
- 代码检查 / 提示 / 语法高亮
- 自动构建(Build → Build Project)
🔧 你点 IDEA 的菜单栏 Build → Build Project
或 右键类 → Compile
,就是用这个 JDK 来编译的。
✅ 2. Settings → Build Tools → Maven → Runner
中的 JRE
- ✅ 这是 Maven 插件在 IDEA 中运行构建命令(如
mvn compile
)时使用的 JDK。
比如你点击 IDEA 左侧的 Maven 面板中的:
Lifecycle → compile / package
此时实际执行的是:
mvn compile
➡️ 而这里使用的 JDK,就由 Maven Runner
中配置的 JDK 决定。不是由 Modules 设置决定的。
✅ 总结对比
项目设置位置 | 控制什么 | 是否用于 Maven | 实际影响 |
---|---|---|---|
Modules → JDK | IDEA 编译项目 | ❌ 不影响 Maven 构建 | 用于 Build 菜单编译、语法提示 |
Maven → Runner → JRE | Maven 命令运行时用的 JDK | ✅ 控制 Maven 构建时用哪个 JDK | 控制 mvn compile 的执行 JDK |
JAVA_HOME (环境变量) | CLI 命令行中 Maven 用的 JDK | ✅(不在 IDEA 中) | 控制终端手动运行 Maven 时的 JDK |
✅ 3. “点击运行按钮” vs “点击 Maven compile”的区别
操作方式 | 使用的 JDK | 使用哪个构建逻辑 | 是否用 Maven |
---|---|---|---|
🔘 点击绿色运行按钮(Run main ) | Modules 设置的 JDK | IDEA 内部编译器编译并运行 | ❌ 不用 Maven |
⚒ 点击 Build → Build Project | Modules 设置的 JDK | IDEA 编译器 | ❌ 不用 Maven |
📦 点击 Maven 面板 → compile | Maven Runner 的 JDK | 用 Maven 编译器构建 | ✅ 用 Maven |
🖥 命令行运行 mvn compile | 环境变量 JAVA_HOME 的 JDK | 用 Maven 编译器构建 | ✅ 用 Maven |
💡 举个实际例子
你项目中 pom.xml
设置了:
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
- 若 Modules 设置用的是 JDK 1.8,你用绿色运行按钮启动,可能会报错:语法不支持或类找不到。
- 若 Maven Runner 设置用的是 JDK 17,你点 Maven → compile,会成功。
- 若
JAVA_HOME
设的是 JDK 11,你在终端mvn package
,可能编译失败(版本不符)。
🧠 最佳实践建议
场景 | 建议配置 |
---|---|
保证一致性 | Modules JDK、Maven Runner JDK、JAVA_HOME 都设为同一版本(如 JDK 17) |
编译兼容性 | pom.xml 设置 <source> /<target> 与实际 JDK 匹配 |
避免运行失败 | Run → Edit Configurations → JDK 也设置为一致版本 |