Ошибка «jar не является внутренней или внешней командой»: причины и решение

Команда jar перестаёт распознаваться командной строкой Windows в тот момент, когда система не находит исполняемый файл jar.exe ни в текущем каталоге, ни в папках, перечисленных в переменной окружения PATH. Сообщение «jar не является внутренней или внешней командой, исполняемой программой или пакетным файлом» — это стандартный ответ cmd.exe, и появляется он чаще всего при попытке упаковать Java-приложение, запустить сборку проекта или выполнить скрипт, который вызывает утилиту архивации JDK.

Корень проблемы почти всегда один из трёх: JDK не установлен вовсе, установлена только JRE без инструментов разработчика, либо путь к каталогу bin не прописан в системной переменной PATH. Ниже разберём, как точно определить причину и устранить её без переустановки всей системы.

Что означает эта ошибка и почему она возникает

Утилита jar (Java Archive Tool) входит в состав JDK — Java Development Kit и предназначена для создания, распаковки и просмотра JAR-архивов. Физически это файл jar.exe, который лежит в каталоге bin внутри папки установки JDK, например C:\Program Files\Java\jdk-17\bin.

Когда вы вводите команду в терминале, Windows ищет исполняемый файл по строго определённому алгоритму: сначала в текущей рабочей папке, затем во всех каталогах, перечисленных в переменной PATH. Если ни в одном из них jar.exe не обнаружен — вы получаете то самое сообщение об ошибке.

Важный нюанс: JRE (Java Runtime Environment) не содержит утилиты jar — там есть только java.exe для запуска программ. Поэтому ситуация, когда java -version работает, а jar — нет, прямо указывает на то, что установлена лишь среда выполнения, а не комплект разработчика.

Быстрая диагностика: что проверить в первую очередь

Прежде чем что-то переустанавливать, выполните три короткие проверки — они займут меньше минуты и сузят круг причин. Откройте командную строку (Win + R, введите cmd) и поочерёдно выполните:

java -version

javac -version

echo %JAVA_HOME%

Интерпретация результатов проста. Если java -version выдаёт версию, а javac -version — ту же ошибку «не является командой», у вас установлена только JRE. Если обе команды не работают, Java либо отсутствует, либо PATH не настроен вовсе. Пустой вывод echo %JAVA_HOME% говорит о том, что переменная JAVA_HOME не задана — многие инструменты сборки (Maven, Gradle, IDE) опираются именно на неё.

  • 🔍 Проверьте наличие папки JDK: откройте C:\Program Files\Java и посмотрите, есть ли там каталог вида jdk-XX.
  • 📂 Убедитесь, что внутри папки JDK существует подкаталог bin с файлом jar.exe.
  • 🖥️ Проверьте, в каком терминале возникает ошибка: старая вкладка cmd могла открыться до изменения переменных и не видеть новые настройки.
  • 🧩 Если ошибка возникает в IDE или скрипте сборки, но не в cmd — проблема в настройках самого инструмента, а не системы.
📊 Что показала диагностика в вашем случае?
JDK вообще не установлен
Установлена только JRE
JDK есть, но PATH не настроен
Всё настроено, но ошибка остаётся

Установка JDK: когда Java отсутствует или стоит только JRE

Если проверка показала, что JDK на компьютере нет, необходимо его установить. Скачивайте дистрибутив только с официальных источников: Oracle или открытые сборки OpenJDK (например, Adoptium/Eclipse Temurin, Microsoft OpenJDK). Сторонние сайты с «готовыми пакетами Java» — частый источник устаревших версий и нежелательного ПО.

Во время установки запомните или скопируйте путь, куда ставится JDK — он понадобится на следующем шаге. По умолчанию это обычно каталог вида C:\Program Files\Java\jdk-<версия>, но некоторые установщики предлагают собственные пути.

⚠️ Внимание: не путайте установщики JRE и JDK. Если на странице загрузки предлагается только «Java для запуска приложений» — это JRE, и утилиты jar там не будет. Ищите именно JDK или «Development Kit».

После завершения установки не спешите проверять команду в уже открытом окне терминала — оно не увидит изменений. Закройте все окна cmd и PowerShell и откройте новое.

Настройка переменных окружения JAVA_HOME и PATH

Это ключевой шаг, решающий проблему в большинстве случаев, когда JDK установлен, но система его «не видит». Вам нужно выполнить два действия: создать переменную JAVA_HOME и добавить путь к bin в PATH.

Откройте настройки: нажмите Win + R, введите sysdm.cpl, перейдите на вкладку «Дополнительно» и нажмите «Переменные среды». Дальнейший порядок такой:

☑️ Настройка переменных окружения для JDK

Выполнено: 0 / 6

Обратите внимание на тонкость: в JAVA_HOME указывается корневая папка JDK, например C:\Program Files\Java\jdk-17, а в Path добавляется именно %JAVA_HOME%\bin, а не сама папка JDK — исполняемые файлы лежат в подкаталоге bin. Альтернатива — прописать в Path полный путь напрямую, например C:\Program Files\Java\jdk-17\bin, но вариант через JAVA_HOME удобнее: при обновлении версии придётся менять путь только в одном месте.

Избегайте лишних пробелов в конце строки пути и не используйте кавычки внутри значений переменных — это частая причина, почему «всё прописано, но не работает».

Проверка результата и типовые ошибки настройки

Откройте новое окно командной строки и выполните:

jar --version

javac -version

Если обе команды выводят номер версии — настройка завершена, утилита доступна из любого каталога. Если ошибка сохраняется, пройдитесь по типичным промахам, которые допускают даже опытные пользователи.

  • ✏️ В JAVA_HOME случайно добавили \bin в конец пути — тогда %JAVA_HOME%\bin превращается в несуществующий ...\bin\bin.
  • 🔄 Переменные изменили, но терминал не перезапустили — старые процессы cmd, IDE и скрипты продолжают использовать устаревшее окружение.
  • 📁 Путь указывает на папку JRE, а не JDK — проверьте наличие jar.exe в целевом каталоге вручную.
  • 👤 Переменная создана только в разделе «Переменные среды пользователя», а скрипт запускается от другого пользователя или службы.
⚠️ Внимание: редактируя переменную Path, не удаляйте существующие записи — среди них системные пути Windows, без которых перестанут работать другие программы. Добавляйте новую строку, не трогая остальные.
Как временно запустить jar без изменения PATH

Можно вызвать утилиту по полному пути, например: "C:\Program Files\Java\jdk-17\bin\jar.exe" --version. Кавычки обязательны, так как в пути есть пробелы. Это удобно для разовой проверки или скриптов, но для постоянной работы правильнее настроить PATH.

Ошибка в IDE, Maven и Gradle: отдельные случаи

Бывает, что в командной строке jar работает, а среда разработки или система сборки продолжает ругаться. Причина в том, что IntelliJ IDEA, Eclipse, Maven и Gradle могут использовать собственные настройки JDK, не связанные с системным PATH.

В IntelliJ IDEA путь к JDK задаётся в структуре проекта (Project SDK), в Eclipse — в разделе Installed JREs настроек. Maven ориентируется прежде всего на переменную JAVA_HOME: если она пуста или указывает на JRE, сборка падает с похожими ошибками. Проверьте, что JAVA_HOME ведёт именно на JDK, и перезапустите IDE после изменения системных переменных — многие среды читают окружение только при старте.

Если проект собирается через обёртку (gradlew, mvnw), убедитесь, что запускаете её из терминала, открытого уже после настройки переменных. Точные названия пунктов меню зависят от версии IDE, поэтому при расхождениях сверяйтесь с официальной документацией вашей среды разработки.

Сравнение причин и способов решения

Сводная таблица поможет быстро сопоставить симптом с действием:

СимптомВероятная причинаРешение
java и jar не работаютJava не установлена или PATH пустУстановить JDK, настроить PATH
java работает, jar — нетУстановлена только JREУстановить полный JDK
JDK есть, но команда не находитсяВ PATH нет пути к binДобавить %JAVA_HOME%\bin в Path
В cmd работает, в IDE — нетIDE использует свой JDK или старое окружениеНастроить SDK в IDE, перезапустить её
Работало и внезапно сломалосьОбновление Java сменило путь установкиОбновить JAVA_HOME на новый каталог

Отдельно стоит сценарий «вчера работало, сегодня нет». Автоматические обновления Java иногда устанавливают новую версию в соседнюю папку и удаляют старую — путь в JAVA_HOME при этом указывает в никуда. Проверьте, существует ли ещё каталог, на который ссылается переменная.

Часто задаваемые вопросы

Чем jar отличается от java?

java запускает скомпилированные программы и входит в состав как JRE, так и JDK. jar — инструмент упаковки и распаковки архивов, который поставляется только с JDK. Поэтому работающая команда java не гарантирует наличие jar.

Нужно ли перезагружать компьютер после настройки PATH?

Полная перезагрузка обычно не требуется. Достаточно закрыть и заново открыть командную строку, IDE и другие программы, которые должны увидеть новые переменные. Перезагрузка помогает лишь в редких случаях, когда переменные используются системными службами.

Можно ли прописать путь только для текущего пользователя?

Да. Если у вас нет прав администратора, создайте JAVA_HOME и дополните Path в верхнем разделе «Переменные среды пользователя». Это сработает для вашей учётной записи, но не для других пользователей и системных служб.

Почему команда работает в cmd, но не в PowerShell?

Обычно это означает, что окно PowerShell было открыто до изменения переменных окружения. Закройте его и откройте заново. Синтаксис вызова jar в обеих оболочках одинаковый, отличий в работе самой утилиты нет.

Как запустить jar-файл, если утилита jar не нужна?

Для запуска готового архива достаточно JRE: используйте команду java -jar имя_файла.jar. Ошибка «не является командой» в этом случае относится к java, и решается добавлением пути к JRE в PATH — но для разработки всё равно рекомендуется полный JDK.