「明明裝了 JDK,為什麼 javac、java 還是不識別命令?」90% 的新手都會踩這個坑。本文結合 Windows 10/11 實操截圖級步驟,梳理環境變量配置全流程,並揭秘隱藏文件後綴導致無法編譯的終極陷阱。
| 項目 | 值 |
|---|---|
| 變量名 | JAVA_HOME |
| 變量值 | C:\Program Files\Java\jdk-17 (你的實際 JDK 安裝目錄,含 bin、lib) |
Path → 編輯 → 新建 → %JAVA_HOME%\bin。.;。.;%JAVA_HOME%\lib\tools.jar (JDK 9+ 無此文件)。> 新開 PowerShell/CMD
> java -version
openjdk version "17.0.9" 2023-10-17
> javac -version
javac 17.0.9
> echo %JAVA_HOME%
C:\Program Files\Java\jdk-17
現象:記事本保存 HelloWorld.java,實際文件名為 HelloWorld.java.txt,導致 javac HelloWorld.java 報錯「找不到文件」。
根因:資源管理器 → 查看 → 勾選「文件名擴展名」未取消勾選,或「隱藏已知文件類型的擴展名」被勾選。
解決:
.txt。| 報錯 | 原因 | 解決 |
|---|---|---|
java: 找不到主類 | 類名與文件名不一致 / 包路徑錯誤 | 文件名 = 類名,javac -d . HelloWorld.java 按包編譯 |
Error: Could not find or load main class | CLASSPATH 未包含當前目錄 . | 執行時 java -cp . HelloWorld 或設置 CLASSPATH=.; |
Unsupported class file major version 61 | JDK 版本不匹配 (編譯版本 > 運行版本) | 統一 JDK 版本,或 javac --release 11 交叉編譯 |
javac 不是內部命令 | Path 未含 %JAVA_HOME%\bin | 重新編輯 Path,重啟終端 |
sdk install java 17.0.9-tem、sdk use java 17.0.9-tem。scoop install temurin17-jdk、scoop reset temurin17-jdk。配置無小事,細節定成敗。收藏此文,告別「環境配置半小時,寫代碼一分鐘」。