我最近尝试更改环境变量以设置 javac.exe 的路径(除其他外)。

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

之后,我添加

%JAVA_HOME%\bin

到 PATH 变量,但这给了我一个错误:

“C:\Program"不被识别为内部或外部命令、可操作命令或批处理文件。

此错误看起来像是"程序文件"中的空间遇到了问题。

关于我可以做什么的任何提示?

这是在 Windows 7 上。

编辑:

环境变量是通过"控制面板”>“高级系统设置”>“环境变量"来设置的。

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

其中 JAVA_HOME 变量定义如下:

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

I%20test%20the%20value%20of%20the%20variable%20through%20a%20command%20prompt%20by%20typing%20%JAVA_HOME%,%20and%20that%27s%20where%20I%20get%20the%20resulting%20error%

‘set’的结果如下:

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

答案

好的,这样就更清楚了。

这里有两个主要问题。

首先,你得到的原因'C:\Program' is not recognized...当然是因为它包含空格。**%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 在里面bin 子目录,您需要将其包含在路径中,即添加;C:\Program Files\Java\jdk1.7.0_25\bin到路径。

(顺便说一句,你有**%JAVA_HOME%**在路径中两次,并且在第二次之后有一个额外的分号。)

来自: stackoverflow.com