'C:\ Program'无法识别错误

时间:2013-07-24 22:20:33

标签: windows cmd environment-variables

我最近尝试更改环境变量以设置javac.exe的路径(以及其他内容)。它工作正常,突然间,我开始得到这个错误。例如,我将JAVA_HOME变量声明为

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

之后,我添加

%JAVA_HOME%\bin

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

  

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

这个错误使得它似乎遇到了“程序文件”中的空间问题。然而,这很奇怪,因为它暂时没有这样做,然后就开始了。此外,还有其他变量,其中的空格可以正常工作。我已经尝试删除变量并重新创建它,在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:\ 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

8 个答案:

答案 0 :(得分:26)

另一个解决方案是这样做:C:\Program Files有一个简短的名字

  

C:\ PROGRA〜1

在Windows中

所以只需编写Progra~1而不是Program Files。 {补充缺少'r'}

答案 1 :(得分:22)

好的,这使它更清晰。

这里有两个主要问题。

首先,你得到'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'
  3. 其次,您不能在路径中使用环境变量。在命令提示符下设置路径时,可以使用环境变量。例如,

    set PATH=%PATH%;%JAVA_HOME%
    

    会起作用,但这是因为%JAVA_HOME%在命令行展开, 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%两次,并且在第二个之后还有一个额外的分号。)

答案 2 :(得分:2)

您是在用户变量或系统变量中设置JAVA_HOME环境变量的路径吗?您不能在系统变量中使用用户变量。因此,如果将JAVA_HOME定义为用户变量,并将其添加到无法工作的系统路径中。

从set命令的输出看,%JAVA_HOME%似乎没有被解析。它应该显示扩展版本而不是带有%符号的版本。

添加Path用户变量并将%JAVA_HOME%\ bin添加到该用户变量。 Windows会将您的用户路径添加到系统路径的末尾。

即使JAVA_HOME变量包含空格,也不需要引号。

答案 3 :(得分:1)

尽管Adi Inbar对此问题非常清楚,但我认为他的解决方法不是最佳解决方案,因为它试图修补原始问题:JDK安装路径中的空格。

解决问题的最佳方法是将JDK重新安装到无空间路径。从长远来看,所有其他解决方法都会让您头疼。

答案 4 :(得分:1)

很显然,这是由于空白引起的。只需将引号添加到短语it文件夹名,其中包含空格 C:\“程序文件” \ Java \ jdk1.7.0_25

答案 5 :(得分:0)

在添加位置之前添加cd 例如: 而不是

  

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

使用

  

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

这对我有所帮助。

答案 6 :(得分:0)

如果您使用的是Windows 10,请使用“浏览文件夹”而不是“编辑文本”。我有类似的问题,使用上述方法已解决。

希望这会有所帮助!

enter image description here

答案 7 :(得分:0)

重新安装Java,并将其安装目录从C:\ Program Files \ Java \ jdk更改为C:\ Java \ jdk中的某个位置。避免在安装过程中使用Program Files文件夹,因为“ Program”和“ Files”之间的空间会产生问题。

谢谢!