【问题标题】:'C:\Program' is not recognized error'C:\Program' 无法识别错误
【发布时间】:2013-07-24 15:00:34
【问题描述】:

我最近尝试更改我的环境变量以设置 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

【问题讨论】:

  • 请更具体/详细。你是如何设置变量的?你是如何将它添加到路径中的?你什么时候/在哪里得到错误?此外,如果您发布环境变量列表(在 cmd 提示符下键入 set 并复制结果),也会有所帮助。
  • 您的问题已在编辑中得到解答。谢谢!

标签: windows cmd environment-variables


【解决方案1】:

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

C:\Progra~1

在窗口中。

所以只需编写 Progra~1 而不是 Program Files。 {添加了缺少的“r”}

【讨论】:

  • @MattCraig:这可以用junction 处理。我们可以在其中创建一个符号链接,例如:junction c:\Program-Files "c:\Program Files"
  • 感谢@adhg,它在使用 C:\Progra~1 而不是 C:\Program Files\.. 设置 JAVA_HOME 后工作。
  • Program Files(x86) 类似,C:\Progra~2,ProgramData 为 C:\Progra~3
【解决方案2】:

好的,这样就更清楚了。

这里有两个主要问题。

首先,您得到'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 位于 bin 子目录中,您需要将其包含在路径中,即在路径中添加 ;C:\Program Files\Java\jdk1.7.0_25\bin

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

【讨论】:

  • 为什么倒数第二个代码sn-p末尾有`?
  • @kayleeFrye_onDeck 看起来像是编辑错误。我可能最初将它作为内联代码跨度,然后将其更改为缩进块并忘记删除结束反引号。我已将其删除。
  • 仅供参考 PySpark 2.1.1 中存在相同的错误,它已在以后的版本中修复。
【解决方案3】:

你设置JAVA_HOME环境变量的路径是用户变量还是系统变量?您不能在系统变量中使用用户变量。因此,如果将 JAVA_HOME 定义为用户变量,并且您将其添加到系统路径中,这将不起作用。

从您的 set 命令的输出看来,%JAVA_HOME% 没有被解析。它应该显示扩展版本,而不是带有 % 登录的版本。

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

你不应该在 JAVA_HOME 变量中使用引号,即使它包含空格。

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

    • 我完全不同意。路径中的空格是 Windows 中的一个事实,并且在已安装程序的标准位置中有一个空格。让处理空间的“头痛”决定您使用的位置是我所说的“解决方法”。学习正确处理空间是使用操作系统的基础知识的一部分,从长远来看更有价值。将程序安装在非标准位置只是为了避免路径中的空格会导致文件系统杂乱无章,并最终导致很多更多令人头疼的问题。我强烈建议反对这样做。
    【解决方案5】:

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

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

    使用

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

    这对我有帮助。

    【讨论】:

      【解决方案6】:

      很明显,这是由于空格造成的。只需将引号添加到包含空格的文件夹名称中 C:\"程序文件"\Java\jdk1.7.0_25

      【讨论】:

        【解决方案7】:

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

        希望这会有所帮助!

        【讨论】:

          【解决方案8】:

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

          谢谢!!

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-11-10
            • 2023-03-19
            • 2021-01-13
            • 1970-01-01
            • 1970-01-01
            • 2021-03-04
            • 2015-04-29
            相关资源
            最近更新 更多