javac не розпізнається як внутрішня чи зовнішня команда, функціонуюча програма чи пакетний файл [закрито]


253

У мене виникає помилка під час спроби компілювати програми 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.

7
я думаю, ваш шлях не встановлений. ідіть до своєї екологічної змінності і встановіть свій шлях
Рон

2
Це питання видається поза темою, оскільки його легко можна знайти у власних інструкціях щодо встановлення JDK, і відповідь там є актуальним та якіснішим, ніж будь-який відповідь тут. Він також доступний для всіх платформ у першій главі офіційного навчального посібника .
Джейсон C

8
Та для інформації, Джейсон С. Але я зізнаюся, я вважаю, що рішення про те, щоб назвати цю тему поза темою, схоже, суперечить кількості інших, які підкорили цю відповідь. Як я маю робити.
Метт Стівенс


Додавання нової змінної простіше, і після створення нової змінної "PATH" переконайтеся, що ви додали крапку з комою (;) та кінцем значення.
Amir Md Amiruzzaman

Відповіді:


434

TL; DR

Для досвідчених читачів:

  1. Знайдіть шлях Java; це виглядає приблизно так:C:\Program Files\Java\jdkxxxx\bin\
  2. Пошук у меню «Пуск середовища» для відкриття діалогового вікна параметрів.
  3. Вивчити PATH. Видаліть старі шляхи Java.
  4. Додайте новий шлях до Java PATH.
  5. Редагувати JAVA_HOME.
  6. Закрийте та знову відкрийте консоль / IDE.

Ласкаво просимо!

Ви стикалися з однією з найвідоміших технічних проблем, з якими стикаються початківці Java: 'xyz' is not recognized as an internal or external command...повідомлення про помилку.

У двох словах, ви не встановили Java правильно . Завершення встановлення Java в Windows вимагає певних кроків вручну. Ви завжди повинні виконувати ці дії після встановлення Java, в тому числі після оновлення JDK.

Змінні середовища та PATH

(Якщо ви вже це розумієте, не соромтесь пропустити наступні три розділи.)

Під час запуску javac HelloWorld.javacmd повинен визначити, де 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 містить слова "Комплект для розробки".

Не використовуйте 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\<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каталог цього.

Тепер ви знаходитесь у правильному каталозі. Скопіюйте шлях. Якщо у File Explorer, натисніть адресний рядок. Якщо в командному рядку скопіюйте рядок.

Отриманий шлях Java повинен бути у формі (без лапок):

C:\Program Files\Java\jdkxxxx\bin\

Zip-файл

Ви завантажили .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викличе Java 8 JVM, який підтримує лише версію 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, закрийте і знову відкрийте його.

Дивитися також


7
Це працювало для мене, але раніше я намагався додати місцеположення в кінці рядка Шлях. Чому це працює лише на початку?
Ерік Х.

4
Дякую! це працює для мене! @Eric H: Додавання наприкінці працює для мене. З того, що я розумію, він йде через Шлях зліва направо і шукає javac.exe. Тож, можливо, у вас є в якомусь каталозі, що спереду, і javac.exe не працює.
Дао Лам

36
+1 для закриття командного рядка, потім його повторне відкриття, що працювало для мене!
Sameh Deabes

Чи є сенс, якщо у мене на комп’ютері різні версії jdk та jre?
Аарон Лю

Я багато чого дізнався про систему ОС під час налаштування цих змінних і всього цього. спасибі людина
Анікет

77

спробуйте це .. У мене це теж було, але тепер це вирішено в XP ...

C:\ YourFolder >set path=C:\Program Files\Java\jdk1.7.0_09\bin;
C:\ YourFolder >javac YourCode.java

45

Ви неправильно ввели setкоманду - ви пропустили зворотну косу рису після C:. Вона повинна бути:

C:\>set path=C:\Program Files (x86)\Java\jdk1.7.0\bin

1
Я пропустив це право, але це була моя друкарська помилка, коли висловлювала тут свою стурбованість. Я перевірив це, і все правильно написано, але все одно дає мені ту саму помилку.
user987137

1
@ user987137. Очевидно, щось неправильно. Чи встановлено JDK (пам'ятайте, що JDK не JRE) у вказаному місці C:\Program Files (x86)\Java\jdk1.7.0? Якщо так, що станеться, якщо ви зробите це cd C:\Program Files (x86)\Java\jdk1.7.0\binі тоді javac -version?
Рагурам

3
У мене була така ж помилка під час налаштування JDK на Win XP, хоча я встановив правильний шлях. Просто закривши командний рядок і знову відкривши його, виправте його.
Кріс Дж

@ChrisJ - Це тому, що новий командний рядок буде запущено в новому сеансі, а отже, також завантажить оновлені змінні середовища.
Cyclonecode

17

У командному рядку виконайте наступне: set Path="C:\Program Files\Java\jdk1.7.0_09\bin" або set PATH="C:\Program Files\Java\jdk1.7.0_09\bin"

Я спробував це, і це працює добре.


thx, це працювало на Windows
Csaba

Хороша відповідь. Працював для мене в Windows 10
Роджер

5

Якщо команда java працює і виникає проблема з javac. потім спочатку перевірте, чи є у файлі jdk bin javac.exe файл чи ні. Якщо файл javac.exe існує, то встановіть його JAVA_HOMEяк системну змінну.


3

Перевірте змінні середовища.

У моєму випадку у мене було встановлено JAVA_HOME як в системних змінних, так і в змінних мого облікового запису користувача, і остання була встановлена ​​на неправильну версію Java . У мене також була така ж проблема зі змінною Path.

Після видалення JAVA_HOME зі змінних мого облікового запису користувача та видалення неправильного шляху зі змінної Path він працював правильно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.