'C:\Program' не распознается ошибка
Недавно я попытался изменить переменные среды, чтобы указать пути к javac.exe(между прочим). Он работал нормально до тех пор, пока я не начал эту ошибку. Например, я объявил переменную JAVA_HOME равной
C:\Program Files\Java\jdk1.7.0_25
После этого я добавляю
%JAVA_HOME%\bin
к переменной PATH, но это дает мне ошибку:
'C:\Program' не распознается как внутренняя или внешняя команда, оперативная команда или командный файл.
Эта ошибка приводит к возникновению проблем с пространством в "Program Files". Это странно, хотя, поскольку это не делалось так хорошо, тогда началось. Кроме того, существуют и другие переменные с пробелами в них, которые работают нормально. Я попытался удалить переменную и воссоздать ее, помещая кавычки вокруг JAVA_HOME (который идет по правильному пути, но не находит javac.exe правильно).
Какие-нибудь советы о том, что я могу сделать?
Это в Windows 7.
EDIT:
Переменные среды были заданы с помощью панели управления > Дополнительные параметры системы > Переменные среды. Значение переменных было установлено путем копирования адреса папки, которую я хочу, через окно проводника. Я добавил его в переменную среды 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", не распознается... "
Результаты "набора" следующие:
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
Ответы
Ответ 1
Хорошо, это делает его более ясным.
Здесь есть две основные проблемы.
Прежде всего, причина, по которой вы получаете 'C:\Program' is not recognized...
, конечно, потому что она содержит пробелы. Тот факт, что вы его цитировали в переменной среды PATH, не имеет никакого отношения к тому, как интерпретируется % JAVA_HOME% в подсказке. У вас есть два варианта.
- Цитировать, когда вы определяете переменную, т.е. установите 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% в пути два раза, а после второй - вторая точка с запятой.)
Ответ 2
Еще одно решение: C:\Program Files
имеет короткое имя
C:\Progra ~ 1
в окнах.
поэтому просто напишите Progra ~ 1 вместо файлов программы. {добавлен недостающий 'r'}
Ответ 3
Является ли путь, по которому вы устанавливаете переменную среды JAVA_HOME в пользовательской переменной или системной переменной? Вы не можете использовать переменные пользователя в системных переменных. Поэтому, если JAVA_HOME определяется как пользовательская переменная, и вы добавляете его на свой системный путь, который не будет работать.
Из вывода команды set это выглядит как% JAVA_HOME% не разрешается. Он должен показать расширенную версию, а не та, у которой есть знаки%.
Добавьте пользовательскую переменную Path и добавьте к ней% JAVA_HOME%\bin. Windows добавит ваш пользовательский путь в конец системного пути.
Вам не нужны кавычки в переменной JAVA_HOME, даже если они содержат пробелы.
Ответ 4
Несмотря на то, что Adi Inbar довольно ясен в этой проблеме, я думаю, что его решение не является лучшим решением, поскольку оно пытается исправить исходную проблему: пробелы на пути вашей установки JDK.
Лучший способ решить вашу проблему - это переустановка JDK в путь без пробелов. Все другие обходные пути вызовут головные боли в долгосрочной перспективе.
Ответ 5
просто добавьте cd перед добавлением местоположения
например:
вместо
C:\Program Files\Java\jdk1.7.0_25
использование
cd C:\Program Files\Java\jdk1.7.0_25
это помогло мне.
Ответ 6
если у вас Windows 10, используйте "Обзор папок", а не "Редактировать текст". У меня была похожая проблема, и это было решено с использованием вышеуказанного метода.
Надеюсь, это поможет!
![enter image description here]()