在Windows安裝好jdk後,執行javac
編譯java檔時發生類似下面錯誤,也就是找不到javac
指令
C:\project>javac HelloWorld.java
'javac' is not recognized as an internal or external command,
operable program or batch file.
首先確認你安裝的是JDK(Java Development Kit),而不是JRE(Java Runtime Environment)。注意JDK才有javac
;而JRE僅有Java的runtime(JVM)執行環境而已。
接著確認Windows的系統環境變數(System variables) %PATH%有加入jdk程式的執行目錄。
你可以在Windows的控制台(Control Panel) -> 系統及安全性(System and Security) -> 系統(System) -> 進階系統設定(Advanced system settings) -> 進階(Advanced tab) -> Environment Variables...
找到系統變數的設定。
或直接在命令提示字元(command line)輸入sysdm.cpl ,3
指令來開啟設定視窗,例如
C:\project>sysdm.cpl ,3
jdk的執行目錄位置,以Windows 64bit版本,安裝jdk 8u181版本為例,預設為
C:\Program Files\Java\jdk1.8.0_181\bin\
。
如果是Windows 32bit版本,則為
C:\Program Files (x86)\Java\jdk1.8.0_181\bin\
。
你可以在命令提示字元輸入echo %path%
指令來確認path變數的內容,例如
C:\project>echo %path%
按下Enter按鈕後即會顯示如下的path變數的內容。
C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\
Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Wi
ndows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\In
tel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Comp
onents\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\I
ntel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Com
mon Files\Intel\WirelessCommon\
例如上面的path中就沒有jdk的執行目錄位置。
如果你確認path變數中確實設定了jdk執行目錄位置,且輸入java -version
指令也正常顯示java版本資訊,則可能是你的jdk執行目錄位置是擺在path變數的最後,導致在執行指令時會先找到其他的java位置(可能是Windows預設的),只要把jdk執行目錄位置移到path變數的最前面即可,例如原本是
C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\
Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Wi
ndows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\In
tel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Comp
onents\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\I
ntel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Com
mon Files\Intel\WirelessCommon\;C:\Program Files\Java\jdk1.8.0_181\bin\
改到最path變數的最前面如下
C:\Program Files\Java\jdk1.8.0_181\bin\;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\
Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Wi
ndows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\In
tel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Comp
onents\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\I
ntel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Com
mon Files\Intel\WirelessCommon\
最後你可以用where java
指令來確認你的jdk路徑是在最前面的。
C:\project>where java
C:\Program Files\Java\jdk1.8.0_181\bin\java.exe
C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe
沒有留言:
張貼留言