我最近尝试改变我的环境variables来设置path到javac.exe(等等)。 这工作正常,直到突然,我开始得到这个错误。 例如,我声明了一个JAVA_HOMEvariables
C:\Program Files\Java\jdk1.7.0_25
之后,我补充一点
%JAVA_HOME%\bin
到PATHvariables,但是这给了我一个错误:
“C:\ Program”不被识别为内部或外部命令,可操作命令或batch file。
这个错误使得它看起来像是遇到了“程序文件”中的空间问题。 然而,这很奇怪,因为它不是很好的一段时间,然后开始。 此外,还有其他variables,其中有空格,工作得很好。 我已经尝试删除variables并重新创build它,把引号围绕JAVA_HOME(这去正确的path,但没有find正确的javac.exe)..
有关我可能做什么的任何提示?
这是在Windows 7上。
编辑:
环境variables是通过控制面板>高级系统设置>环境variables设置的。 通过浏览器窗口复制我想要的文件夹的地址来设置variables的值。 我将它添加到PATH环境variables中,在最后添加一个前面的variables和一个分号之间的空格,如下所示:
C:\Users\Demo_User_1\AppData\Roaming\npm; %JAVA_HOME%
其中JAVA_HOMEvariables是这样定义的:
C:\Program Files\Java\jdk1.7.0_25
我通过input%JAVA_HOME%来通过命令提示符testingvariables的值,这就是我所得到的''C:\ Program'所产生的错误无法识别的地方…“
'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...
当然是因为它包含空格。 在PATH环境变量中引用它的事实与在提示符下解释%JAVA_HOME%的方式没有任何关系。 你有两个选择。
"C:\Program Files\Java\jdk1.7.0_25"
"%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%两次,而在第二个之后有一个额外的分号。)
另一个解决方案是这样做的: C:\Program Files
有一个简短的名字
C:\ PROGRA〜1
在窗口中。
所以只需编写程序文件而不是程序文件。 {缺少'r'}
您是在用户变量还是系统变量中设置JAVA_HOME环境变量的路径? 系统变量中不能使用用户变量。 所以,如果JAVA_HOME被定义为一个用户变量,并且你将它添加到你的系统路径中是行不通的。
从set命令的输出看起来像%JAVA_HOME%没有被解析。 它应该显示扩展版本不是%符号的。
添加一个Path用户变量并添加%JAVA_HOME%\ bin到那个。 Windows会将您的用户路径添加到系统路径的末尾。
即使它包含空格,也不应该在JAVA_HOME变量中使用引号。
尽管Adi Inbar在问题上相当清楚,但我认为他的解决方法不是最好的解决方案,因为它试图修补原始问题:JDK安装路径中的空格。
解决问题的最好方法是将JDK重新安装到无空间路径。 所有其他解决方法从长远来看都会令您头痛。
只需在添加位置之前添加cd,例如:而不是
C:\ Program Files \ Java \ jdk1.7.0_25
使用
cd C:\ Program Files \ Java \ jdk1.7.0_25
这帮助了我。