Глиф Учебники

«javac» не является внутренней или внешней командой

Справочник · Java · 3 минуты чтения

Сообщение значит, что Windows не нашла программу javac ни в одной папке из списка Path. Причины почти всегда такие: JDK не установлен (стоит только среда для запуска), папка JDK не добавлена в Path или окно терминала открыто раньше, чем закончилась установка.

В командной строке ошибка выглядит так:

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

В PowerShell — «Имя "javac" не распознано как имя командлета, функции, файла сценария или выполняемой программы». В английской Windows — 'javac' is not recognized as an internal or external command.

Что сделать по порядку

Пробуйте по очереди, пока javac -version не покажет номер версии. В Linux и macOS — сразу раздел Linux и macOS.

  1. Откройте новое окно терминала

    Окна, открытые до установки, не видят изменений Path. Закройте терминал и откройте новый. Если работаете в редакторе со встроенным терминалом — перезапустите редактор целиком.

    javac -version в новом окне выводит номер версии — дело было в старом окне.

    Не помогло — дальше: «Проверьте, что стоит именно JDK»

  2. Проверьте, что стоит именно JDK

    Если java -version работает, а javac — нет, скорее всего установлена только среда запуска — например, Java 8 с java.com. В ней компилятора нет: поставьте JDK по справке Как установить JDK и прописать JAVA_HOME. JDK уже стоит, если в его папке (например, C:\Program Files\Eclipse Adoptium\…\bin) есть файл javac.exe, — тогда переходите к следующему шагу.

    После установки JDK в новом окне javac -version выводит номер версии.

    Не помогло — дальше: «Добавьте папку bin JDK в Path»

  3. Добавьте папку bin JDK в Path

    1. Нажмите Win+R, введите sysdm.cpl, на вкладке «Дополнительно» нажмите «Переменные среды».
    2. Выберите Path → «Изменить» → «Создать» и впишите путь к папке bin, например C:\Program Files\Eclipse Adoptium\jdk-21.0.5.11-hotspot\bin. Точный путь посмотрите в «Проводнике»: в этой папке должен лежать файл javac.exe.
    3. Нажмите «ОК» во всех окнах, откройте новое окно командной строки и проверьте:
    Командная строка
    javac -version
    where javac

    where javac показывает, какой именно javac.exe нашла система (в PowerShell — where.exe javac). Если его нет, а путь в Path есть, — проверьте путь на опечатки: лишний пробел, bin не в той папке, кавычки внутри строки.

    javac -version выводит номер версии, а where javac — путь к javac.exe в папке JDK.

Java запускается, но не та

Бывает, что javac работает, а java -version показывает другую, старую версию. Обычно в Path выше стоит папка старой Java, например C:\Program Files\Common Files\Oracle\Java\javapath или C:\ProgramData\Oracle\Java\javapath. where java покажет все найденные варианты по порядку — запускается первый. Поднимите папку нужного JDK выше кнопкой «Вверх» в окне изменения Path или удалите старую Java через «Установку и удаление программ».

Linux и macOS

В Linux та же ошибка выглядит как javac: command not found или Command 'javac' not found. Поставьте пакет JDK (не JRE):

Bash
sudo apt update
sudo apt install openjdk-21-jdk

В macOS при запуске javac без установленного JDK система сообщает, что Java не найдена. Поставьте JDK с adoptium.net (файл .pkg) и откройте новое окно терминала.

В IntelliJ IDEA

IntelliJ IDEA не ищет javac через Path: JDK указывается в настройках проекта (File → Project Structure → Project → SDK), там же его можно скачать. Поэтому программа может запускаться в IntelliJ IDEA и при этом не находиться в командной строке — это нормально, если командная строка не нужна.