Я испытываю ошибку при попытке компилировать программы Java.
Я на Windows (это проблема, специфичная для Windows), и у меня установлена последняя версия JDK.
Я попытался найти решение, связанное с PATH
переменной, но ошибка не исчезла.
Консольный вывод:
C:\>set path=C:Program Files (x86)\Java\jdk1.7.0\bin
C:\>javac Hello.java
'javac' is not recognized as an internal or external command,
operable program or batch file.
java
path
environment-variables
command-prompt
javac
user987137
источник
источник
Ответы:
TL; DR
Для опытных читателей:
C:\Program Files\Java\jdkxxxx\bin\
PATH
. Удалить старые пути Java.PATH
.JAVA_HOME
.Добро пожаловать!
Вы столкнулись с одной из самых известных технических проблем, с которыми сталкиваются новички в 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 есть два типа : переменные среды пользователя и системные переменные среды .Вы можете увидеть переменные окружения следующим образом:
Наиболее важной переменной является
PATH
. Это список путей, разделенных;
. Когда команда вводится в cmd, каждый каталог в списке будет проверяться на наличие соответствующего исполняемого файла.На моем компьютере
PATH
есть:Когда вы запускаете
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
но неjavac
.java
иjavac
, наряду с множеством других инструментов разработки. JDK является надмножеством JRE.Вы должны убедиться, что вы установили JDK . Если вы только установили JRE, вы не сможете выполнить,
javac
потому что у вас нет установленного компилятора Java на вашем жестком диске. Проверьте список программ Windows и убедитесь, что имя пакета Java содержит слова «Development Kit».Не использовать
set
(Если вы все равно не планируете, не стесняйтесь пропустить этот раздел.)
Несколько других ответов рекомендуют выполнить некоторое изменение:
Не делай этого. У этой команды есть несколько серьезных проблем:
PATH
и заменяет его на пути Java. После выполнения этой команды вы можете обнаружить, что другие команды не работают.C:\Program Files\Java\jdk1.7.0_09\bin
- у вас почти наверняка есть более новая версия JDK, которая будет иметь другой путь.PATH
относится только к текущему сеансу cmd. Вам придется вводитьset
команду каждый раз при открытии командной строки.Точки № 1 и № 2 могут быть решены с помощью этой немного лучшей версии:
Но это вообще плохая идея.
Найти путь Java
Правильный путь начинается с поиска, где вы установили Java. Это зависит от того, как вы установили Java.
Exe установщик
Вы установили Java, запустив программу установки. Установщик Oracle размещает версии Java под
C:\Program Files\Java\
(илиC:\Program Files (x86)\Java\
). С помощью проводника или командной строки перейдите в этот каталог.Каждая подпапка представляет версию Java. Если есть только один, вы нашли его. В противном случае выберите тот, который выглядит как более новая версия. Убедитесь, что имя папки начинается с
jdk
(в отличие отjre
). Войдите в каталог.Затем введите
bin
каталог этого.Теперь вы находитесь в правильном каталоге. Скопируйте путь. Если в проводнике, щелкните адресную строку. Если в командной строке , скопируйте приглашение.
Результирующий путь Java должен быть в форме (без кавычек):
Почтовый файл
Вы загрузили ZIP-файл, содержащий JDK. Извлеките его в случайное место, где оно не будет вам мешать;
C:\Java\
это приемлемый выбор.Затем найдите
bin
папку где-нибудь в нем.Теперь вы находитесь в правильном каталоге. Скопируйте его путь. Это путь Java.
Не забудьте никогда не перемещать папку, так как это сделает недействительным путь.
Откройте диалог настроек
Это диалог для редактирования
PATH
. Существует множество способов получить доступ к этому диалоговому окну, в зависимости от версии Windows, настроек пользовательского интерфейса и степени испорченной конфигурации вашей системы.Попробуйте некоторые из них:
control sysdm.cpl,,3
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, и вы столкнетесь с ошибками неподдерживаемой версии и не сможете скомпилировать и запустить какие-либо программы.) Обойдите эти проблемы, убедившись, что у вас есть только один путь JavaPATH
. И пока вы занимаетесь этим, вы также можете удалить старые версии 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, закройте и снова откройте ее.
Смотрите также
источник
попробуйте это .. У меня было это тоже, но теперь это решено в XP ..
источник
Вы неправильно набрали
set
команду - вы пропустили обратную косую черту послеC:
. Так должно быть:источник
C:\Program Files (x86)\Java\jdk1.7.0
? Если это так, что произойдет, если вы делаете,cd C:\Program Files (x86)\Java\jdk1.7.0\bin
а затемjavac -version
?Запустите следующую команду из командной строки:
set Path="C:\Program Files\Java\jdk1.7.0_09\bin"
илиset PATH="C:\Program Files\Java\jdk1.7.0_09\bin"
Я попробовал это, и это работает хорошо.
источник
Если команда Java работает и возникают проблемы с Javac. затем сначала проверьте, есть ли в каталоге bin jdk файл javac.exe или нет. Если файл javac.exe существует, установите его в
JAVA_HOME
качестве системной переменной.источник
Проверьте переменные среды.
В моем случае JAVA_HOME был установлен в системных переменных, а также в переменных моей учетной записи пользователя, а последняя была установлена на неправильную версию Java . У меня тоже была такая же проблема с переменной Path.
После удаления JAVA_HOME из переменных моей учетной записи пользователя и удаления неправильного пути из переменной Path он работал правильно.
источник