2013-07-24 91 views
18

我最近嘗試更改我的環境變量以設置javac.exe路徑(以及其他內容)。它工作正常,直到突然之間,我開始出現這個錯誤。例如,我宣佈一個JAVA_HOME變量是'C: Program'無法識別錯誤

C:\Program Files\Java\jdk1.7.0_25

之後,我添加

%JAVA_HOME%\bin

到PATH變量,但是這給了我一個錯誤:

'C:\Program' is not recognized as an internal or external command, operable command or batch file.

這個錯誤使得它看起來像是遇到了「Program Files」中的空間問題。然而,這很奇怪,因爲它不是很好的一段時間,然後開始。此外,還有其他變量,其中的空格可以正常工作。我嘗試刪除變量並重新創建它,將引號放在JAVA_HOME(這轉到正確的路徑,但沒有正確找到javac.exe)。

有關我可能做什麼的任何提示?

這是Windows 7

編輯:

環境變量進行去控制面板>高級系統設置>環境變量設置。通過瀏覽器窗口複製我想要的文件夾的地址來設置變量的值。我將其添加到環境變量PATH通過附加與前述變量和在端部具有分號之間的空間中的地址,因爲這樣的:

C:\Users\Demo_User_1\AppData\Roaming\npm; %JAVA_HOME%

其中JAVA_HOME變量被定義爲這樣:

C:\Program Files\Java\jdk1.7.0_25

我通過鍵入%JAVA_HOME%通過命令提示符測試變量的值,而這也正是我得到的產生的錯誤「‘C:\程序’無法識別...」

是個

的「設置」,結果如下:

C:\Users\Demo_User_1>set 
ALLUSERSPROFILE=C:\ProgramData 
ANDROID_HOME=C:\Users\Demo_User_1\Desktop\Android\adt-bundle-windows-x86_64-2013 
0717\sdk 
APPDATA=C:\Users\Demo_User_1\AppData\Roaming 
CommonProgramFiles=C:\Program Files\Common Files 
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files 
CommonProgramW6432=C:\Program Files\Common Files 
COMPUTERNAME=DEMO_USER_1-HP 
ComSpec=C:\Windows\system32\cmd.exe 
FP_NO_HOST_CHECK=NO 
HOMEDRIVE=C: 
HOMEPATH=\Users\Demo_User_1 
JAVA_HOME=C:\Program Files\Java\jdk1.7.0_25 
LOCALAPPDATA=C:\Users\Demo_User_1\AppData\Local 
LOGONSERVER=\\DEMO_USER_1-HP 
NUMBER_OF_PROCESSORS=4 
OnlineServices=Online Services 
OS=Windows_NT 
Path=C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Clien 
t\;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files 
(x86)\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows; 
C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program 
Files (x86)\Windows Live\Shared;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\ 
x86;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64;C:\Program Files\Intel\I 
ntel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Managem 
ent Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engin 
e Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Compone 
nts\IPT;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\Wir 
elessCommon\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files 
(x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;C:\Program Files (x86)\Windows 
Kits\8.0\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\ 
Tools\Binn\;C:\Program Files\nodejs\; C:\Users\Demo_User_1\Desktop\Android\adt-b 
undle-windows-x86_64-20130717\sdk/platform-tools; C:\Users\Demo_User_1\Desktop\A 
ndroid\adt-bundle-windows-x86_64-20130717\sdk\tools; %JAVA_HOME%; %ANT_HOME%/bin 
; C:\Program Files\Java\jdk1.7.0_25\bin; C:\Users\Demo_User_1\AppData\Roaming\np 
m; "%JAVA_HOME%"; ;C:\Users\Demo_User_1\Desktop\Android\adt-bundle-windows-x86_6 
4-20130717\sdk/tools; C:\Users\Demo_User_1\Desktop\Android\adt-bundle-windows-x8 
6_64-20130717\sdk/platform-tools 
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC 
PCBRAND=Pavilion 
Platform=MCD 
PROCESSOR_ARCHITECTURE=AMD64 
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 58 Stepping 9, GenuineIntel 
PROCESSOR_LEVEL=6 
PROCESSOR_REVISION=3a09 
ProgramData=C:\ProgramData 
ProgramFiles=C:\Program Files 
ProgramFiles(x86)=C:\Program Files (x86) 
ProgramW6432=C:\Program Files 
PROMPT=$P$G 
PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\ 
PUBLIC=C:\Users\Public 
SESSIONNAME=Console 
SystemDrive=C: 
SystemRoot=C:\Windows 
TEMP=C:\Users\DEMO_U~1\AppData\Local\Temp 
TMP=C:\Users\DEMO_U~1\AppData\Local\Temp 
USERDOMAIN=Demo_User_1-HP 
USERNAME=Demo_User_1 
USERPROFILE=C:\Users\Demo_User_1 
VS110COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools 
\ 
windir=C:\Windows 
windows_tracing_flags=3 
windows_tracing_logfile=C:\BVTBin\Tests\installpackage\csilogfile.log 
+0

請更具體/詳細。你是如何設置變量的?你是如何將它添加到路徑中的?你何時/何地得到錯誤?另外,如果您發佈環境變量列表(在** cmd **提示符下鍵入'set'並複製結果)將會有所幫助。 –

+0

您的問題已在編輯中得到解答。謝謝! – derekahc

回答

20

好了,這使得它更清晰。

這裏有兩個主要問題。

首先,你得到'C:\Program' is not recognized...的原因當然是因爲它包含空格。在PATH環境變量中引用它的事實與在提示時如何解釋%JAVA_HOME%無關。你有兩個選擇。

  1. 引用它,當你定義變量,即設置JAVA_HOME"C:\Program Files\Java\jdk1.7.0_25"
  2. 引用它,當你調用它。在提示符下鍵入"%JAVA_HOME%\bin"。當然,除非用可執行文件結束路徑,否則會得到「未識別爲內部或外部命令,可操作程序或批處理文件」錯誤。"%JAVA_HOME%\bin\javac.exe"),但是你會看到這種方式它抱怨'C:\ Program Files \ Java \ jdk1.7.0_25'''而不是''C:\ Program'

其次,您不能在路徑中使用環境變量。當您在命令提示符處設置路徑時,您可以使用環境變量可以。例如,

set PATH=%PATH%;%JAVA_HOME% 

會的工作,但那是因爲%JAVA_HOME%在命令行擴大和PATH被設置爲結果。如果您檢查PATH的值,您會看到它以C:\ Program Files \ Java \ jdk1.7.0_25而不是%JAVA_HOME%結尾。

而且,如果的javac.exe子目錄,你需要包括路徑,即添加到;C:\Program Files\Java\jdk1.7.0_25\bin的路徑。

(順便說一句,你的路徑有%JAVA_HOME%兩次,並有第二個後多餘的分號。)

+1

爲什麼你在第二個到最後一個代碼片段結尾? –

+1

@kayleeFrye_onDeck看起來像一個編輯錯誤。我可能最初是將它作爲內聯代碼跨度,然後將其更改爲縮進塊並忘記刪除關閉反引號。我已將其刪除。 –

1

即使阿迪因巴爾是相當清楚的問題,我認爲他的解決辦法ISN是最好的解決方案,因爲它試圖修補原始問題:JDK安裝路徑中的空格。

解決您的問題的最佳方法實際上是將JDK重新安裝到無空間路徑。從長遠來看,所有其他解決方法都會令您頭痛。

+0

我不能不同意。路徑中的空間在Windows中是生活中的事實,並且在已安裝程序的標準位置中有空間。讓處理空間的「頭痛」決定了你使用的位置是我稱之爲「解決方法」的地方。學習如何正確處理空間是使用操作系統的基礎知識的一部分,並且從長遠角度來看更有價值。在非標準位置安裝程序只是爲了避免路徑中的空間導致文件系統混亂,並最終導致更多令人頭痛的問題。我強烈建議*反對*這樣做。 –

25

另一種解決方案是這樣:C:\Program Files有一個簡短的名稱

C:\Progra~1

的窗口。

所以只需編寫Progra〜1而不是Program Files。 {added missing'r'}

+2

這似乎不再起作用的Windows 8 –

+0

@MattCraig:可以使用[junction](https://technet.microsoft.com/en-us/sysinternals/bb896768.aspx)處理。在這裏我們可以創建一個象徵性的鏈接,如:'junction c:\ Program Files' c:\ Program Files「' –

+0

謝謝@adhg,它用C:\ Progra〜1設置JAVA_HOME,而不是C:\ Program Files \ .. –

2

是您在用戶變量或系統變量中設置JAVA_HOME環境變量的路徑嗎?您不能在系統變量中使用用戶變量。所以如果JAVA_HOME被定義爲一個用戶變量,並且你將它添加到你的系統路徑中是行不通的。

從set命令的輸出中,它看起來像%JAVA_HOME%沒有被解析。它應該顯示擴展版本不是帶有%符號的擴展版本。

添加一個Path用戶變量並將%JAVA_HOME%\ bin添加到該變量中。 Windows會將您的用戶路徑添加到系統路徑的末尾。

即使它包含空格,也不應該在JAVA_HOME變量中使用引號。

0

只需添加位置 如前加CD:中 代替

C:\Program Files\Java\jdk1.7.0_25

使用

cd C:\Program Files\Java\jdk1.7.0_25

幫我。