2011-12-31 4 views
39

Я пытаюсь настроить некоторый путь, используя переменную среды. Я добавил переменную среды «MAVEN_HOME» со значением «C: \ maven». Затем на пути я добавил «% MAVEN_HOME% \ bin; ... rest». Когда я набираю «echo $ MAVEN_HOME%», я получаю правильный «C: \ maven», напечатанный на экране. Но когда я печатаю «mvn», который является пакетным файлом в каталоге «bin», он не может его найти.переменная среды Windows 7, не работающая в пути

Итак, я вручную добавил весь путь в PATH. «C: \ maven \ bin; ... rest» , и он смог найти «mvn» и выполнить его.

Может ли кто-нибудь помочь мне в том, что я сделал не так?

+0

Что делает эхо% PATH% output? – paislee

+3

У меня была такая же проблема, и я обнаружил, что это проблема длины пути. Я создал новые переменные среды, P86 и P64, чтобы заменить все вхождения ссылок «C: \ Program Files (x86)» и «C: \ Program Files» в существующую переменную PATH. Новый путь (System + User) в настоящее время составляет 2754 символа после расширения новых переменных. Я читал в подобных потоках, что теоретический предел составляет 32 КБ, но, видимо, это не практический предел. – hknust

ответ

46

У меня была точно такая же проблема, чтобы решить, вы можете сделать одну из двух вещей:

  • Поместить все переменные в системные переменные ins TEAD Пользователя и добавить те, которые вы хотите PATH

Или

  • Помещенный все переменные в переменных пользователя, а также создавать и редактировать переменные PATH в переменной User, а не в системе. Переменные пути в системе не расширяют пользовательские переменные.

Если выше, все правильно, но проблема все еще присутствует, вам нужно проверить системный реестр, в HKEY_CURRENT_USER \ окружающей среды, чтобы убедиться, что «PATH» тип ключа является REG_EXPAND_SZ (не REG_SZ).

+1

Привет @pcmind, у меня установлен REG_SZ, что мне теперь делать? –

+0

сделайте копию значения ключа «PATH» (с типом REG_SZ), удалите ключ «PATH», создайте новый ключ с типом REG_EXPAND_SZ и вставьте старое значение. Перезапустить компьютер. –

+0

Это может быть вариант. Однако приведенное ниже предложение имеет больше смысла. Если проблем с пространством нет, даже если вы определяете его как на уровне пользователя, так и на уровне системы, он должен работать. – Saman

5

% M2% и% JAVA_HOME% необходимо добавить к переменной PATH в переменных USER, а не в переменных SYSTEM.

+0

Неправда. Я имею их в переменных SYSTEM. Для меня это были пробелы на путях, такие как 'C: \ Program Files', которые вызвали проблему OP. –

66

Проверьте, есть ли пробел между предыдущим пути и следующий:

Неправильно: c:\path1; c:\Maven\bin\; c:\path2\

Правильно: c:\path1;c:\Maven\bin\;c:\path2\

+6

Ты спас мой день сэр !!!! Спасибо огромное! –

+3

Большое спасибо! Оно работает!!!!! – leon

+2

Это правильно. работал для меня. – Saman

5

Если в окне PATH есть какие-либо ошибки, они молча игнорируют его. Такие вещи, как наличие% PATH% или пробелов между элементами на вашем пути, нарушат его. Будьте предупреждены

+0

Это сработало для меня! Не знал об этом вообще. – Antinous

14

Такие вещи, как наличие% PATH% или пробелы между пунктами на вашем пути, нарушат его. Имейте в виду.

Да, пути окон, которые включают пробелы, будут вызывать ошибки. Например, приложение добавило это к передней части системы% PATH% определений переменных:

C:\Program Files (x86)\WebEx\Productivity Tools;C:\Sybase\IQ-16_0\Bin64; 

который вызвал все пути в% PATH% до не может быть установлен в окне CMD.

Моего решения разграничить расширенный переменный путь в двойных кавычках, где необходимо:

"C:\Program Files (x86)\WebEx\Productivity Tools";C:\Sybase\IQ-16_0\Bin64; 

Пространство поэтому игнорируется, и полный путь переменный обрабатываются должным образом.

+0

Это * CAN * вызывает ошибки для небольшого числа пользователей. Я изучаю что-то подобное, но ваше заключение здесь неверно. У большинства пользователей есть пути, добавленные или добавленные с пробелами без проблемы, точка с запятой - прекрасный разделитель, который означает отсутствие кавычек, но мы обнаружили, что для некоторых пользователей это может быть правдой. Почему такое незначительное меньшинство пользователей затронуто таким образом, но не другие? Неизвестно с этого времени. Вот почему это приложение добавило себя как таковое, это было не простое пропущение. –

4

Также стоит убедиться, что вы используете командную строку с правами администратора - замок системы на моей рабочей машине означает, что стандарт CMD только что сообщили МВН не может быть найден при вводе MVN --version

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

0

Скопируйте значение пути в блокнот и проверьте, соответствует ли это соответствует эхо% пути% в окне терминала и в случае необходимости вносит изменения. Затем удалите прежнее значение пути и вставьте значение блокнота обратно. Я предполагаю, что какой-то невидимый символ, введенный там некоторой установкой, исказил значение пути.

3

Если значение PATH будет слишком длинным после того, как переменная PATH вашего пользователя будет объединена в переменную PATH среды, Windows будет неспособно автоматически конкатенировать переменную пользователя PATH.

Это может произойти после установки нового программного обеспечения и добавления чего-то к PATH, тем самым нарушив существующее установленное программное обеспечение. Windows не работает!

Лучшее решение - отредактировать одну из переменных PATH на панели управления и удалить записи, которые вам не нужны. Затем откройте новое окно CMD и посмотрите, показаны ли все записи в «echo% PATH%».

1

У меня была такая же проблема, я исправил ее, удалив PATHEXT из пользовательской переменной. Он должен существовать только в Системной переменной с .COM; .EXE; .BAT; .CMD; .VBS; .VBE; .JS; .JSE; .WSF; .WSH; .MSC

Также удалите переменную от пользователя к системе и только включите этот путь в пользовательскую переменную

0

Убедитесь, что установлены как системные, так и пользовательские пути.

25

Мой вопрос оказался ошеломляюще прост:

команды Перезапуск быстрое и новые переменные должны обновить

+0

Я не знаю почему, но работал на меня! БЛАГОДАРЯ!! – nikk

+6

Не игнорируйте этот ответ; Это проблема 9 раз из 10. – aguertin

1

Чтобы решить эту проблему, я использовал Setx команды, которые пытаются установить переменные уровня пользователя.

я ниже ...

setx JAVA_HOME "C:\Program Files\Java\jdk1.8.0_92" 

setx PATH %JAVA_HOME%\bin 

ПРИМЕЧАНИЕ: Windows попытаться приложить при условии значение переменной к существующему значению переменной. Поэтому нет необходимости давать дополнительные% PATH% ... что-то вроде% JAVA_HOME% \ bin; % PATH%

+1

Существует альтернативный путь, перейдя в Панель управления -> Все элементы панели управления -> Учетные записи пользователей, а затем нажмите «Изменить переменные среды» в левой навигации .. но как-то он не работает в Windows 7 и 10. До адреса Microsoft, который мы можем использовать выше для setx. –

Смежные вопросы