TL; DR
Для досвідчених читачів:
- Знайдіть шлях Java; це виглядає приблизно так:
C:\Program Files\Java\jdkxxxx\bin\
- Пошук у меню «Пуск середовища» для відкриття діалогового вікна параметрів.
- Вивчити
PATH
. Видаліть старі шляхи Java.
- Додайте новий шлях до Java
PATH
.
- Редагувати
JAVA_HOME
.
- Закрийте та знову відкрийте консоль / IDE.
Ласкаво просимо!
Ви стикалися з однією з найвідоміших технічних проблем, з якими стикаються початківці 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 існує два типи : змінні середовища користувача та змінні системного середовища .
Ви можете бачити такі змінні середовища як:
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
Не роби цього. У цій команді є кілька основних проблем:
- Ця команда стирає все інше від
PATH
і замінює його на шляху Java. Після виконання цієї команди ви можете виявити, що інші команди не працюють.
- Ваш шлях до Java , мабуть, немає
C:\Program Files\Java\jdk1.7.0_09\bin
- у вас майже напевно є нова версія JDK, яка мала б інший шлях.
- Нове
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, закрийте і знову відкрийте його.
Дивитися також