23

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

8 回答 8

37

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

C:\程序~1

在窗户里。

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

于 2013-11-20T17:43:14.460 回答
25

好的,这样就更清楚了。

这里有两个主要问题。

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

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

于 2013-07-25T18:51:31.050 回答
2

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

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

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

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

于 2014-05-13T11:14:29.220 回答
1

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

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

于 2013-07-25T19:26:43.770 回答
1

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

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

采用

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

这对我有帮助。

于 2016-04-20T11:59:45.027 回答
1

很明显,这是由于空格造成的。只需将引号添加到包含空格 C:\"Program Files"\Java\jdk1.7.0_25 的短语 it foldername

于 2020-02-18T04:50:05.307 回答
0

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

希望这可以帮助!

在此处输入图像描述

于 2019-02-19T00:25:11.313 回答
0

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

谢谢!!

于 2020-02-26T11:28:47.730 回答