javac не распознается как внутренняя или внешняя команда, работаемая программа или пакетный файл

& Лт;!- язык-все: lang-none - >

Я испытываю ошибку при попытке скомпилировать 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.
Комментарии к вопросу (8)

& Лт;!- язык-все: lang-none - >

TL; DR

Для опытных читателей:

  1. Найти путь Java; выглядит так: C: \ Program Files \ Java \ jdkxxxx \ bin \

  2. Начать меню поиска «переменной среды», чтобы открыть диалоговое окно параметров.

  3. Изучите PATH. Удалить старые пути Java.

  4. Добавьте новый путь Java в PATH.

  5. Редактировать JAVA_HOME.

  6. Закройте и снова откройте консоль / IDE .


Добро пожаловать!

Вы столкнулись с одной из самых известных технических проблем, стоящих перед новичками Java: 'xyz' не распознается как внутренняя или внешняя команда... сообщение об ошибке.

Короче говоря, вы не правильно установили Java . Завершение установки Java в Windows требует некоторых ручных шагов. Вы всегда должны выполнять эти шаги после установки Java, в том числе после обновления JDK

Переменные среды и PATH

  • (Если вы уже понимаете это, не стесняйтесь пропустить следующие три раздела.) *

Когда вы запускаете javac HelloWorld.java, cmd должен определить, где находится javac.exe. Это достигается с помощью PATH, переменной среды.

Переменная environment - это специальная пара ключ-значение (например,. windir = C: \ WINDOWS). Большинство пришло с операционной системой, а некоторые необходимы для правильного функционирования системы. Список из них передается каждой программе (включая cmd) при ее запуске. В Windows существует [два типа](https://stackoverflow.com/questions/4477660/what-is-the-difference- между пользователем-переменные и системы-переменные): переменные среды пользователя и * переменные среды системы.

Вы можете видеть переменные среды, как это:

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](https:/superuser.com/quuser.vuser.vuser.vsystem/vsystem. Он механически входит в каждый каталог в списке и проверяет, javac.com, javac.exe, javac.bat и т. Д. присутствует. Когда он находит «javac», он запускает его. Когда это не так, он печатает 'javac' не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл.

Вы должны добавить каталог исполняемых файлов Java в PATH.

JDK против. JRE

  • (Если вы уже понимаете это, не стесняйтесь пропустить этот раздел.) *

При загрузке Java вам предлагается выбор между:

  • Java Runtime Environment (JRE), которая включает в себя необходимые инструменты для запуска программ Java, но не для компиляции новых - она содержит java, но не javac.

  • Java Development Kit (JDK), который содержит как java, так и javac, а также множество других инструментов разработки. JDK является суперсетами JRE .

Вы должны убедиться, что вы установили JDK . Если вы установили только JRE, вы не можете выполнить javac, потому что у вас нет установки компилятора Java на вашем жестком диске. Проверьте список программ Windows и убедитесь, что имя пакета Java включает в себя слова «Комплект разработки».

Не используйте set

  • (Если вы все равно не планировали, не стесняйтесь пропустить этот раздел.) *

Несколько других ответов рекомендуют выполнить некоторые варианты:

C:\>:: DON'T DO THIS
C:\>set PATH=C:\Program Files\Java\jdk1.7.0_09\bin

Не делай этого. Есть несколько основных проблем с этой командой:

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

  2. Ваш путь Java , вероятно, не C: \ Program Files \ Java \ jdk1.7.0_09 \ bin - у вас почти наверняка есть более новая версия JDK, которая будет иметь другой путь.

  3. Новый PATH применяется только к текущему сеансу cmd. Вам придется повторно вводить команду set каждый раз, когда вы открываете командный пункт.

Пункты № 1 и № 2 можно решить с помощью этой немного лучшей версии:

C:\>:: DON'T DO THIS EITHER
C:\>set PATH=C:\Program Files\Java\\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 файл

Вы скачали .zip, содержащий JDK. Извлеките его в какое-то случайное место, где он не помешает вам; C: \ Java \это приемлемый выбор.

Затем найдите папку bin где-нибудь внутри нее.

Вы сейчас в правильном каталоге. Скопируйте его путь. Это путь Java.

Не забудьте никогда не перемещать папку, так как это лишает законной силы путь.

Откройте диалоговое окно настроек

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

Попробуйте некоторые из них:

  • Пуск меню / панель поиска & # 187; поиск "переменная среды"

  • Win + R & # 187; control sysdm.cpl,, 3

  • Win + R & # 187; SystemPropertiesAdvanced.exe & # 187; Переменные среды

  • проводник & # 187; введите в адресную строку Панель управления \ Система и безопасность \ Система & # 187; Расширенные настройки системы (крайний слева, на боковой панели) & # 187; Переменные среды

  • рабочий стол & # 187; щелкните правой кнопкой мыши этот компьютер & # 187; Свойства & # 187; Расширенные настройки системы & # 187; Переменные среды

  • Меню «Пуск» & # 187; щелкните правой кнопкой мыши компьютер & # 187; Свойства & # 187; Расширенные настройки системы & # 187; Переменные среды

  • Панель управления (иконовой режим) & # 187; Система & # 187; Расширенные настройки системы & # 187; Переменные среды

  • Панель управления (режим категории) & # 187; Система и безопасность & # 187; Система & # 187; Расширенные настройки системы & # 187; Переменные среды

  • рабочий стол & # 187; щелкните правой кнопкой мыши Мой компьютер & # 187; Продвинутый & # 187; Переменные среды

  • Панель управления & # 187; Система & # 187; Advanced & # 187; Переменные среды

Любой из них должен привести вас в правильное диалоговое окно настроек.

Если вы работаете в Windows 10, Microsoft благословила вас необычным новым пользовательским интерфейсом редактировать PATH. В противном случае вы увидите «PATH» в его полной инкрустированной точкой с запятой славе, сжатой в однострочный текстовый ящик. Делайте все возможное, чтобы сделать необходимые изменения, не нарушая вашу систему.

Чистый PATH

Посмотрите на PATH. У вас почти наверняка есть две переменные PATH (из-за пользователя против. переменные системной среды). Вам нужно посмотреть на них обоих.

Проверьте другие пути Java и удалите их. Их существование может вызвать всевозможные конфликты. ,(Например, если у вас есть JRE 8 и JDK 11 в PATH, в таком порядке, тогда javac вызовет компилятор Java 11, который создаст файлы версии 55 .class, но java будет вызывать Java 8 JVM, который поддерживает только до версии 52, и вы будете испытывать [неподдерживаемые ошибки версии]https://stackoverflow.com/questions/10382929/how-to-fix-java-lang-unupportedclassversionerror-unupported-major-minor-versi) и не сможет компилировать и запускать какие-либо программы.) Устраните эти проблемы, убедившись, что у вас есть только один путь Java в PATH. И пока вы занимаетесь этим, вы также можете удалить старые версии Java. И помните, что вам не нужно иметь и JDK, и JRE .

Если у вас есть C: \ ProgramData \ Oracle \ Java \ javapath, удалите это также . Oracle намеревался решить проблему разрыва путей Java после обновлений, создав символическую ссылку, которая всегда будет указывать на последнюю установку Java. К сожалению, он часто в конечном итоге указывает на неправильное местоположение или [просто не работает](https://stackoverflow.com/questions/26864662/how-to-solve-the-error-the-system-cannot-find- the-file-c-programdata-oracle-ja). Лучше удалить эту запись и вручную управлять путем Java.

Теперь также есть хорошая возможность провести общее ведение домашнего хозяйства на PATH. Если у вас есть пути, относящиеся к программному обеспечению, которое больше не установлено на вашем ПК, вы можете удалить их. Вы также можете перемешать порядок путей вокруг (если вы заботитесь о таких вещах).

Добавить в PATH

Теперь выберите путь Java, который вы нашли три шага назад, и поместите его в систему PATH.

Неважно, куда в списке идет ваш новый путь; размещение в конце - хороший выбор.

Если вы используете пользовательский интерфейс pre-Windows 10, убедитесь, что вы правильно разместили точки с запятой. Должен быть ровно один, разделяющий каждый путь в списке.

Здесь действительно нечего сказать. Просто добавьте путь к PATH и нажмите OK .

Установите JAVA_HOME

Пока вы на этом, вы также можете установить JAVA_HOME. Это еще одна переменная среды, которая также должна содержать путь Java. Многие Java и не Java-программы, включая популярную систему сборки Java Gradle, будут выдавать ошибки, если она не установлена правильно.

Если JAVA_HOME не существует, создайте его как новую переменную системной среды. Установите для него тот же путь Java, который вы добавили в PATH.

Не забудьте также отредактировать JAVA_HOME после обновления Java.

Закрыть и заново открыть командный пункт

Хотя вы изменили PATH, все запущенные программы, включая cmd, видят только старые PATH. Это связано с тем, что список всех переменных среды копируется в программу только тогда, когда она начинает выполняться; после этого он обращается только к кэшированной копии.

Нет хорошего способа [обновить переменные среды cmd](https://stackoverflow.com/questions/171588/is-there-a-command-to-refresh-environment-variables-from-the-command-prompt-in -w), поэтому просто закройте Command Prompt и откройте его снова. Если вы используете IDE, закройте и снова откройте его.

Смотрите также

Комментарии (5)

попробуй это.. У меня тоже было это, но теперь это решено в XP ..

C:\ YourFolder >set path=C:\Program Files\Java\jdk1.7.0_09\bin;
C:\ YourFolder >javac YourCode.java
Комментарии (0)

& Лт;!- язык-все: lang-none - >

Вы неправильно отобрали команду set - вы пропустили обратную косую черту после C:. Должно быть:

C:\>set path=C:\Program Files (x86)\Java\jdk1.7.0\bin
Комментарии (4)

Запустите следующее из командной строки:

set Path = "C: \ Program Files \ Java \ jdk1.7.0_09 \ bin"

или

установить PATH = "C: \ Program Files \ Java \ jdk1.7.0_09 \ bin"

Я попробовал это, и это работает хорошо.

Комментарии (1)

Если команда Java работает и получает проблемы с javac. затем сначала проверьте в каталоге bin jdk файл javac.exe или нет. Если файл javac.exe существует, установите JAVA_HOME как системную переменную.

Комментарии (0)

Проверьте свои переменные среды.

В моем случае у меня был установлен JAVA_HOME в Системных переменных , а также в моих переменных учетной записи пользователя , и последний был установлен в неправильную версию Java . У меня также была такая же проблема с переменной Path.

После удаления JAVA_HOME из моей учетной записи пользователя переменных и удаления неправильного пути из переменной Path он работал правильно.

Комментарии (0)