2009-11-05 63 views
103

我試圖用Windows命令提示符使用javac,但它不工作。javac在Windows命令提示符下不工作

在環境路徑變量的末尾添加「C:\ Program Files \ Java \ jdk1.6.0_16 \ bin \」目錄後,java命令正常工作,但使用javac給了我以下錯誤:

'javac' is not recognized as an internal or external command, operable program or batch file. 

任何想法?謝謝。

回答

127

如果您在命令提示符處於打開狀態時將其添加到控制面板中,則不會影響當前的命令提示符。你需要退出並重新打開或者乾脆:

set "path=%path%;c:\program files\java\jdk1.6.0_16\bin" 

通過檢查的方式,執行:

echo %path% 

從命令提示符,讓我們知道它是什麼。

否則,確保有在該目錄中的javac通過嘗試:

"c:\program files\java\jdk1.6.0_16\bin\javac.exe" 
從命令提示符

。你也可以告訴哪個可執行(如果有的話)與所述命令中使用:

for %i in (javac.exe) do @echo %~$PATH:i 

這類似於在某些UNIX型操作系統的which和/或whence命令的巧妙的方法。

+11

啊,是的,所有我需要做的就是重新打開命令提示符,它工作得很好,謝謝! – Domenic 2009-11-05 06:02:54

+1

+1。 「(%)我在(java.exe)做@echo%〜$ PATH:我」只是救了我一天。我只是一個偶爾的Windows用戶,我只是不知道可能有另一個隱藏的java.exe在c:\ windows \ system :) – 2010-08-19 18:02:22

+1

上述設置的路徑命令不適用於我在Windows 7下。我不得不使用set path =「%path%; c:\ program files \ java \ jdk1.6.0_16 \ bin。這是沒有引號!我不熟悉Windows命令行,但似乎引號保留。 %path%將使它完全無法使用 – user716468 2013-01-06 07:35:25

-7

將其作爲「C:\ Program Files \ Java \ jdk1.6.0_16 \ bin」。刪除反斜槓將工作

+1

我不認爲這是正確的。我可以將我的路徑設置爲「C:\ Program Files \ Java \ jdk1.6.0_16 \ bin \」(帶有斜線),它仍然可以正常工作。 – paxdiablo 2009-11-05 05:43:28

2

我不得不這樣做是爲了得到這個在Windows 7 64

打開一個命令提示符(cmd.exe的)和工作類型:

set CLASSPATH=C:\Program Files\Java\jdk1.7.0_01\bin 

確保您重新打開所有正在運行的命令提示符窗口以更新環境變量。

+1

我想在這裏取消設置類路徑會更好。我不會使用CLASSPATH變量,尤其是不在Windows上它是全局的,並影響多個JRE ... – eckes 2011-11-16 04:02:28

5

我知道這可能不是你的具體錯誤,但我曾經在我的路徑有一個領先的空間和Java會工作,但javac不會。

對於它的價值,我提供了一些忠告:「仔細檢查你的路徑」。

83

Windows操作系統搜索PATH環境變量中列出的當前目錄和目錄中的可執行程序。 JDK的程序(例如Java編譯器javac.exe和Java運行時java.exe)駐留在目錄「\ bin」(其中表示JDK安裝目錄,例如C:\ Program Files \ Java \ jdk1.8.0_xx)。您需要在PATH中包含「\ bin」目錄。

要在Windows XP/VISTA/7/8編輯PATH環境變量:

  1. 控制面板⇒系統⇒高級系統設置

  2. 切換到 「高級」 選項卡⇒環境變量

  3. 在 「系統變量」,向下滾動,選擇 「PATH」 ⇒編輯

((現在的閱讀,然後再繼續下面的3倍,沒有UNDO))

在 「變量值」 字段中插入 「C:\ Program Files文件\的Java \ jdk1.8.0_xx \ BIN」(將xx替換爲升級編號並驗證這是您的JDK的二進制目錄!!!)在所有現有目錄的前面,後跟分號(;),將JDK的二進制目錄與其他現有目錄分開。 不要刪除任何現有的條目;否則,某些現有應用程序可能無法運行。

Variable name : PATH 
Variable value : c:\Program Files\Java\jdk1.8.0_xx\bin;[existing entries...] 

Screenshot

+1

這是一個爲我工作的。謝謝 ! – WhySoSerious 2013-05-13 18:16:02

+4

+1爲大寫「PATH」 – 2013-06-12 12:53:32

+0

對於第4步。我發現我不得不選擇jre ,但jdk 。然後一切工作正常。 – morganw09dev 2013-08-29 01:06:59

-3

,當我試圖做的.java到的.class命令javac的沒有工作。我通過轉到C:\ Program Files文件(x86)\ Java \ jdk1.7.0_04 \ bin得到它的工作,並且當我在該目錄中時,我鍵入了Javac.exe C \ Test \ test.java並且它使用該類戰術。試試看。

-1

「; C:\ Program Files \ Java \ jdk1.6.0 \ bin」有時您可能會忘記將分號放在最後一個現有路徑上。

1

好吧,這不可能是這種情況,但我們很多人在過去犯過這個錯誤,其中很少人還沒有意識到這一點,也就是說,每次你追加任何路徑(任何路徑)環境變量,你可能會在「分號」之後立即打開空格鍵(正如你通常在「時間段」之後鍵入編輯器一樣)。

這將在路徑中創建一個前導空間,例如「C:\ Program Files \ Java \ jdk1.6.0 \ bin」,因此係統將找不到「javac.exe」。

4

嘗試解決此:http://techdem.centerkey.com/2009/05/javahome-command-script.html

這些是更強大的改變 - 就像當你升級JDK或JRE,因爲沒有硬編碼的路徑。

的快速解決方案(如果你不想閱讀博客)是

C:\>for /d %i in ("\Program Files\Java\jdk*") do set JAVA_HOME=%i 
C:\>set PATH=%PATH%;%JAVA_HOME% 

然後,您可以將這些行添加到啓動/登錄腳本。

+2

爲了調用javac,我必須使用「set PATH =%PATH%;%JAVA_HOME%\ bin」(注意添加的\ bin)。 – user31389 2016-01-01 20:55:19

27

長谷歌之後,我才知道的javac.exe必須是內JDK(C:\ Program Files文件\的Java \ JDK(版本號)\ BIN)內部沒有JRE(C:\ PROGRAM文件(x86)\ Java \ jre7 \ bin)「JRE沒有附帶編譯器,它只是一個Java運行時環境,您需要的是Java開發工具包。「爲了使用編譯器javac的

如果你是裏面的jre

指向斌爲了在cmd以使用javac的javac將無法正常工作,JDK必須安裝在您的系統...

對於javac的路徑

路徑= C:\ Program Files文件(x86)的\的Java \ jre7 \ BIN這是錯誤的

路徑= C:\ Program Files文件\的Java \ JDK(版本號)\ BIN這是正確的

確保 「的javac.exe」 是你「C裏面:\ Program Files文件\的Java \ JDK(版本數)\ BIN」

不要誤會與JRE和JDK兩者是完全不同的

如果你沒有JDK請下載此鏈接http://www.oracle.com/technetwork/java/javase/downloads/index.html

基準線爲JDK VS JRE What is the difference between JDK and JRE?

+4

這是非常好的建議 - – user26676 2014-05-20 11:11:53

0

我有這個標題中發佈的同樣的問題。 Java會工作,但javac不會在Windows命令提示符下(cmd.exe)。

對我來說,簡單地說,在我的%PATH%環境變量的末尾添加C:\Program Files\Java\jdk1.8.0\bin時,我放置了一個空格。
刪除;和下一個文件路徑之間的空格。

1

更改文件夾「jdk1.7.0_45」「jdk1_7_0_60」並更新Windows環境中的路徑。否則,路徑會忽略代表隱藏文件的前面的點,因此該文件夾不會顯示在PATH字符串中。

0

我所面臨的相同問題是Java的會工作,但javac的不會在Windows 8

的問題發生,因爲我忘了在路徑名的末尾刪除'>'一個命令提示符,即它是這樣的:

C:\Program Files\Java\jdk*\bin> 

它被假設是這樣的:

C:\Program Files\Java\jdk*\bin 
0

的路徑將只爲管理員帳戶設置。因此,以管理員身份啓動命令提示符非常重要,如果您還沒有。

0

確保您不允許Path變量中路徑之間的空格(空格)。我的問題是我有空白,我相信Windows將其視爲一個NULL,並沒有閱讀我的Java路徑。

0

我很欣賞這是一個古老的問題,但我的解決方案不是在這裏發佈的答案,以便在其他人嘗試其餘的情況下發布。

就我而言,先前安裝的Java JRE(在ProgramData/Oracle/Java中)在路徑變量列表頂部有一個路徑變量。該「Oracle」路徑的內容有一個java.exe,但不是一個javac.exe。 我將完整的JDK路徑添加到路徑變量列表頂部,位於「Oracle」路徑變量之前,然後選擇javac.exe和java。

0
for /d %i in ("\Program Files\Java\jdk*") do set JAVA_HOME=%i 
set JAVA_HOME 

this解決方案工作對我

+0

我建議直接添加更多註釋到您的答案,而不是僅僅提供一個鏈接:鏈接可能會被破壞。最好的祝福 – YakovL 2017-09-02 07:07:55

相關問題