? 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)我來圖解。