'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.

РЕДАКТИРОВАТЬ:

Переменные среды были установлены, перейдя в Панель управления> Расширенные настройки системы> Переменные среды. Значения переменных были установлены путем копирования адреса папки, которую я хочу, через окно проводника. Я добавил его в переменную среды 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

person derekahc    schedule 24.07.2013    source источник
comment
Пожалуйста, будьте более конкретными / подробными. Как вы установили переменную? Как вы добавили его в путь? Когда / где вы получаете ошибку? Кроме того, будет полезно, если вы разместите список переменных среды (введите set в приглашении cmd и скопируйте результаты).   -  person Adi Inbar    schedule 25.07.2013
comment
На ваши вопросы были даны ответы в редактировании. Спасибо!   -  person derekahc    schedule 25.07.2013


Ответы (8)


Хорошо, это проясняет.

Здесь есть две основные проблемы.

Во-первых, вы получаете '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"), но вы увидите, что таким образом он жалуется на < strong> '"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%, а после второй стоит дополнительная точка с запятой.)

person Adi Inbar    schedule 25.07.2013
comment
Почему у вас есть `в конце предпоследнего фрагмента кода? - person kayleeFrye_onDeck; 26.09.2016
comment
@kayleeFrye_onDeck Похоже на ошибку редактирования. Я, вероятно, изначально использовал его как встроенный диапазон кода, затем изменил его на блок с отступом и забыл удалить закрывающую обратную кавычку. Я удалил это. - person Adi Inbar; 31.03.2017
comment
К вашему сведению, такая же ошибка существовала в PySpark 2.1. 1, исправлено в более поздних версиях. - person NikoNyrh; 12.09.2018

Еще одно решение: C:\Program Files имеет короткое имя

C: \ Progra ~ 1

в окнах.

так что просто напишите Progra ~ 1 вместо Program Files. {добавлена ​​пропущенная буква "r"}

person adhg    schedule 20.11.2013
comment
@MattCraig: это можно сделать с помощью junction. где мы можем создать символическую ссылку, например: junction c:\Program-Files "c:\Program Files" - person Mohammad Faisal; 17.02.2017
comment
Спасибо @adhg, это сработало после настройки JAVA_HOME с C: \ Progra ~ 1 вместо C: \ Program Files \ .. - person Yogen Rai; 05.05.2017
comment
Аналогично для Program Files (x86) это C: \ Progra ~ 2, C: \ Progra ~ 3 для ProgramData - person mavis; 23.10.2019

Путь, по которому вы устанавливаете переменную среды JAVA_HOME, находится в пользовательской переменной или в системной переменной? Вы не можете использовать пользовательские переменные в системных переменных. Итак, если JAVA_HOME определен как пользовательская переменная, и вы добавляете ее в свой системный путь, это не сработает.

Из вывода вашей команды set похоже, что% JAVA_HOME% не разрешается. Он должен показывать расширенную версию, а не ту, в которой есть знак%.

Добавьте пользовательскую переменную Path и добавьте к ней% JAVA_HOME% \ bin. Windows добавит ваш пользовательский путь в конец системного пути.

Вам не нужны кавычки в переменной JAVA_HOME, даже если она содержит пробелы.

person andrea    schedule 13.05.2014

Несмотря на то, что Ади Инбар довольно ясно понимает проблему, я думаю, что его обходной путь не лучшее решение, потому что он пытается исправить исходную проблему: пробелы на пути вашей установки JDK.

Лучший способ решить вашу проблему - это переустановить JDK на путь без пробелов. Все остальные обходные пути в конечном итоге вызовут у вас головную боль.

person DigCamara    schedule 25.07.2013
comment
Я не мог больше не согласиться. Пробелы в путях - это факт жизни в Windows, и в стандартном месте есть место для установленных программ. Позволить головным болям, связанным с обработкой пробелов, диктовать, какие места вы используете, - это то, что я бы назвал обходным путем. Обучение правильному обращению с пробелами - это часть основ использования ОС, и в долгосрочной перспективе это гораздо более ценно. Установка программ в нестандартные места только для того, чтобы избежать пробелов в пути, приводит к неорганизованной файловой системе и, в конечном итоге, создает намного больше головной боли. Я настоятельно не рекомендую против этого делать. - person Adi Inbar; 25.07.2013

просто добавьте компакт-диск перед добавлением местоположения, например: вместо

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

использовать

компакт-диск C: \ Program Files \ Java \ jdk1.7.0_25

это помогло мне.

person Ronak    schedule 20.04.2016

Совершенно очевидно, что это вызвано пустым пространством. Просто добавьте кавычки к фразе, которая содержит пробел C: \ "Program Files" \ Java \ jdk1.7.0_25.

person Shubham gupta    schedule 18.02.2020

если у вас Windows 10, используйте «Обзор папки», а не «Редактировать текст». У меня была аналогичная проблема, и она была решена с помощью вышеуказанного метода.

Надеюсь это поможет!

введите здесь описание изображения

person Jag    schedule 19.02.2019

Переустановите Java и измените каталог установки с C: \ Program Files \ Java \ jdk на C: \ Java \ jdk. Избегайте использования папки Program Files при установке, так как пробел между «Program» и «Files» создает проблему.

Спасибо!!

person Mohit Varshney    schedule 26.02.2020