TL; DR
Для опытных читателей:
- Найти путь к Java; это выглядит так:
C:\Program Files\Java\jdkxxxx\bin\
- Пуск-меню поиска «переменная среды», чтобы открыть диалоговое окно параметров.
- Исследовать
PATH
. Удалить старые пути Java.
- Добавьте новый путь Java к
PATH
.
- Редактировать
JAVA_HOME
.
- Закройте и снова откройте консоль / IDE.
Добро пожаловать!
Вы столкнулись с одной из самых известных технических проблем, с которыми сталкиваются новички в Java: 'xyz' is not recognized as an internal or external command...
сообщение об ошибке.
Короче говоря, вы не правильно установили Java . Завершение установки Java в Windows требует некоторых шагов вручную. Вы должны всегда выполнять эти шаги после установки Java, в том числе после обновления JDK.
Переменные среды и PATH
(Если вы уже понимаете это, не стесняйтесь пропустить следующие три раздела.)
При запуске javac HelloWorld.java
cmd должен определить, где javac.exe
находится. Это достигается с PATH
помощью переменной среды.
Переменная среды является специальный ключ-значение пары (например windir=C:\WINDOWS
). Большинство из них поставляется с операционной системой, а некоторые необходимы для правильного функционирования системы. Список их передается каждой программе (включая cmd) при запуске. В Windows есть два типа : переменные среды пользователя и системные переменные среды .
Вы можете увидеть переменные окружения следующим образом:
C:\>set
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\craig\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
...
Наиболее важной переменной является PATH
. Это список путей, разделенных ;
. Когда команда вводится в cmd, каждый каталог в списке будет проверяться на наличие соответствующего исполняемого файла.
На моем компьютере PATH
есть:
C:\>echo %PATH%
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPower
Shell\v1.0\;C:\ProgramData\Microsoft\Windows\Start Menu\Programs;C:\Users\craig\AppData\
Roaming\Microsoft\Windows\Start Menu\Programs;C:\msys64\usr\bin;C:\msys64\mingw64\bin;C:\
msys64\mingw32\bin;C:\Program Files\nodejs\;C:\Program Files (x86)\Yarn\bin\;C:\Users\
craig\AppData\Local\Yarn\bin;C:\Program Files\Java\jdk-10.0.2\bin;C:\ProgramFiles\Git\cmd;
C:\Program Files\Oracle\VirtualBox;C:\Program Files\7-Zip\;C:\Program Files\PuTTY\;C:\
Program Files\launch4j;C:\Program Files (x86)\NSIS\Bin;C:\Program Files (x86)\Common Files
\Adobe\AGL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program
Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\iCLS Client\;
C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files
(x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\iCLS
Client\;C:\Users\craig\AppData\Local\Microsoft\WindowsApps
Когда вы запускаете javac HelloWorld.java
, cmd, понимая, что javac
это не внутренняя команда , ищет систему, PATH
за которой следует пользовательPATH
. Он механически входит в каждый каталог в списке, и проверяет javac.com
, javac.exe
, javac.bat
и т.д. присутствует. Когда он находит javac
, он запускает его. Когда это не так, он печатает'javac' is not recognized as an internal or external command, operable program or batch file.
Вы должны добавить каталог исполняемых файлов Java в PATH
.
JDK против JRE
(Если вы уже поняли это, не стесняйтесь пропустить этот раздел.)
При загрузке Java вам предлагается выбор между:
- Java Runtime Environment (JRE), которая включает в себя инструменты , необходимые для запуска программ Java, но не компилировать новые - она содержит ,
java
но не javac
.
- Kit Java Development (JDK), который содержит как
java
и javac
, наряду с множеством других инструментов разработки. JDK является надмножеством JRE.
Вы должны убедиться, что вы установили JDK . Если вы только установили JRE, вы не сможете выполнить, javac
потому что у вас нет установленного компилятора Java на вашем жестком диске. Проверьте список программ Windows и убедитесь, что имя пакета Java содержит слова «Development Kit».
Не использовать set
(Если вы все равно не планируете, не стесняйтесь пропустить этот раздел.)
Несколько других ответов рекомендуют выполнить некоторое изменение:
C:\>:: DON'T DO THIS
C:\>set PATH=C:\Program Files\Java\jdk1.7.0_09\bin
Не делай этого. У этой команды есть несколько серьезных проблем:
- Эта команда стирает все остальное от
PATH
и заменяет его на пути Java. После выполнения этой команды вы можете обнаружить, что другие команды не работают.
- Ваш Java-путь , вероятно, нет
C:\Program Files\Java\jdk1.7.0_09\bin
- у вас почти наверняка есть более новая версия JDK, которая будет иметь другой путь.
- Новое
PATH
относится только к текущему сеансу cmd. Вам придется вводить set
команду каждый раз при открытии командной строки.
Точки № 1 и № 2 могут быть решены с помощью этой немного лучшей версии:
C:\>:: DON'T DO THIS EITHER
C:\>set PATH=C:\Program Files\Java\<enter the correct Java folder here>\bin;%PATH%
Но это вообще плохая идея.
Найти путь Java
Правильный путь начинается с поиска, где вы установили Java. Это зависит от того, как вы установили Java.
Exe установщик
Вы установили Java, запустив программу установки. Установщик Oracle размещает версии Java под C:\Program Files\Java\
(или C:\Program Files (x86)\Java\
). С помощью проводника или командной строки перейдите в этот каталог.
Каждая подпапка представляет версию Java. Если есть только один, вы нашли его. В противном случае выберите тот, который выглядит как более новая версия. Убедитесь, что имя папки начинается с jdk
(в отличие от jre
). Войдите в каталог.
Затем введите bin
каталог этого.
Теперь вы находитесь в правильном каталоге. Скопируйте путь. Если в проводнике, щелкните адресную строку. Если в командной строке , скопируйте приглашение.
Результирующий путь Java должен быть в форме (без кавычек):
C:\Program Files\Java\jdkxxxx\bin\
Почтовый файл
Вы загрузили ZIP-файл, содержащий JDK. Извлеките его в случайное место, где оно не будет вам мешать; C:\Java\
это приемлемый выбор.
Затем найдите bin
папку где-нибудь в нем.
Теперь вы находитесь в правильном каталоге. Скопируйте его путь. Это путь Java.
Не забудьте никогда не перемещать папку, так как это сделает недействительным путь.
Откройте диалог настроек
Это диалог для редактирования PATH
. Существует множество способов получить доступ к этому диалоговому окну, в зависимости от версии Windows, настроек пользовательского интерфейса и степени испорченной конфигурации вашей системы.
Попробуйте некоторые из них:
- Меню «Пуск» / «панель задач» »поиск« переменная среды »
- Win + R »
control sysdm.cpl,,3
- Win + R »
SystemPropertiesAdvanced.exe
» Переменные среды
- Проводник »введите в адресную строку
Control Panel\System and Security\System
» Расширенные настройки системы (крайняя слева, на боковой панели) »Переменные среды
- Рабочий стол »щелкните правой кнопкой мыши на этом ПК» Свойства »Дополнительные параметры системы» Переменные среды
- Меню Пуск »щелкните правой кнопкой мыши Компьютер» Свойства »Дополнительные параметры системы» Переменные среды
- Панель управления (режим значков) »Система» Расширенные настройки системы »Переменные среды
- Панель управления (режим категории) »Система и безопасность» Система »Расширенные настройки системы» Переменные среды
- Рабочий стол »щелкните правой кнопкой мыши Мой компьютер» Дополнительно »Переменные среды
- Панель управления »Система» Дополнительно »Переменные среды
Любой из них должен привести вас к правильному диалогу настроек.
Если вы работаете в Windows 10, Microsoft предоставила вам новый модный интерфейс для редактирования PATH
. В противном случае, вы увидите PATH
всю его славу, инкрустированную точкой с запятой, сжатую в однострочное текстовое поле. Делайте все возможное, чтобы внести необходимые изменения, не нарушая вашу систему.
чистый PATH
Посмотрите PATH
. У вас почти наверняка есть две PATH
переменные (из-за переменных среды пользователя и системы). Вы должны посмотреть на них обоих.
Проверьте другие пути Java и удалите их. Их существование может вызвать всевозможные конфликты. (Например, если у вас есть JRE 8 и JDK 11 в PATH
указанном порядке, то javac
вызовет компилятор Java 11, который создаст .class
файлы версии 55 , но java
вызовет JVM Java 8, которая поддерживает только до версии 52, и вы столкнетесь с ошибками неподдерживаемой версии и не сможете скомпилировать и запустить какие-либо программы.) Обойдите эти проблемы, убедившись, что у вас есть только один путь Java PATH
. И пока вы занимаетесь этим, вы также можете удалить старые версии Java . И помните, что вам не нужно иметь JDK и JRE.
Если у вас есть C:\ProgramData\Oracle\Java\javapath
, удалите это также . Oracle намеревался решить проблему разрушения путей Java после обновлений путем создания символической ссылки , которая всегда указывала бы на последнюю версию Java. К сожалению, это часто заканчивается указанием на неправильное местоположение или просто не работает . Лучше удалить эту запись и вручную управлять путем Java.
Теперь также есть хорошая возможность вести общую уборку на дому PATH
. Если у вас есть пути, относящиеся к программному обеспечению, которое больше не установлено на вашем компьютере, вы можете удалить их. Вы также можете перетасовать порядок путей вокруг (если вы заботитесь о таких вещах).
добавить в PATH
Теперь возьмите путь Java, который вы нашли три шага назад, и поместите его в систему PATH
.
Неважно, где в списке идет ваш новый путь; размещение в конце - прекрасный выбор.
Если вы используете пользовательский интерфейс, предшествующий Windows 10, убедитесь, что вы правильно разместили точки с запятой. Должен быть ровно один разделитель каждого пути в списке.
Здесь действительно больше нечего сказать. Просто добавьте путь к PATH
и нажмите ОК.
Устанавливать JAVA_HOME
В то время как вы на это, вы также можете установить JAVA_HOME
. Это еще одна переменная среды, которая также должна содержать путь Java. Многие Java и не-Java программы, в том числе популярные системы сборки Java Maven и Gradle , будут выдавать ошибки, если они установлены неправильно.
Если JAVA_HOME
не существует, создайте его как новую системную переменную среды. Установите его на путь каталога Java без bin/
каталога, то есть C:\Program Files\Java\jdkxxxx\
.
Не забудьте редактировать и JAVA_HOME
после обновления Java.
Закройте и снова откройте командную строку
Хотя вы изменили PATH
, все запущенные программы, включая cmd, видят только старые PATH
. Это связано с тем, что список всех переменных среды копируется в программу только тогда, когда он начинает выполняться; после этого он обращается только к кэшированной копии.
Нет хорошего способа обновить переменные среды cmd , поэтому просто закройте командную строку и снова откройте ее. Если вы используете IDE, закройте и снова откройте ее.
Смотрите также