TL; DR
Dla doświadczonych czytelników:
- Znajdź ścieżkę Java; To wygląda tak:
C:\Program Files\Java\jdkxxxx\bin\
- Wyszukaj w menu Start „zmienną środowiskową”, aby otworzyć okno dialogowe opcji.
- Zbadać
PATH
. Usuń stare ścieżki Java.
- Dodaj nową ścieżkę Java do
PATH
.
- Edit
JAVA_HOME
.
- Zamknij i ponownie otwórz konsolę / IDE.
Witamy!
Wystąpił jeden z najbardziej znanych problemów technicznych dla początkujących użytkowników języka Java: 'xyz' is not recognized as an internal or external command...
komunikat o błędzie.
Krótko mówiąc, nie zainstalowałeś poprawnie Javy . Zakończenie instalacji Java w systemie Windows wymaga ręcznych czynności. Zawsze musisz wykonać te kroki po zainstalowaniu Javy, w tym po aktualizacji JDK.
Zmienne środowiskowe i PATH
(Jeśli już to rozumiesz, możesz pominąć kolejne trzy sekcje).
Po uruchomieniu javac HelloWorld.java
cmd musi ustalić, gdzie javac.exe
się znajduje. Dokonuje się tego za PATH
pomocą zmiennej środowiskowej.
Zmienna jest para specjalny klucz-wartość (na przykład windir=C:\WINDOWS
). Większość pochodzi z systemem operacyjnym, a niektóre są wymagane do prawidłowego funkcjonowania systemu. Ich lista jest przekazywana do każdego programu (w tym cmd) podczas jego uruchamiania. W systemie Windows istnieją dwa typy : zmienne środowiskowe użytkownika i systemowe zmienne środowiskowe .
Możesz zobaczyć swoje zmienne środowiskowe w następujący sposób:
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
...
Najważniejszą zmienną jest PATH
. Jest to lista ścieżek oddzielonych przez ;
. Gdy polecenie zostanie wprowadzone do cmd, każdy katalog na liście zostanie przeskanowany w poszukiwaniu pasującego pliku wykonywalnego.
Na moim komputerze PATH
jest:
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
Po uruchomieniu javac HelloWorld.java
cmd, gdy zorientujesz się, że javac
nie jest to polecenie wewnętrzne , przeszukuje system, PATH
a następnie użytkownikaPATH
. To mechanicznie wchodzi każdym katalogu na liście, i sprawdza, czy javac.com
, javac.exe
, javac.bat
itp obecny jest. Gdy znajdzie javac
, uruchamia go. Kiedy nie, drukuje'javac' is not recognized as an internal or external command, operable program or batch file.
Musisz dodać katalog wykonywalny Java do PATH
.
JDK vs. JRE
(Jeśli już to rozumiesz, możesz pominąć tę sekcję).
Podczas pobierania oprogramowania Java możesz wybrać między:
- Java Runtime Environment (JRE), który zawiera narzędzia niezbędne do uruchomienia programów Java, ale nie skompilować nowe - zawiera ona
java
jednak nie javac
.
- Java Development Kit (JDK), który zawiera zarówno
java
i javac
, wraz z szeregiem innych narzędzi programistycznych. JDK jest nadzbiorem środowiska JRE.
Musisz upewnić się , że zainstalowałeś JDK . Jeśli zainstalowałeś tylko środowisko JRE, nie możesz go uruchomić, javac
ponieważ nie masz instalacji kompilatora Java na dysku twardym. Sprawdź listę programów Windows i upewnij się, że nazwa pakietu Java zawiera słowa „Development Kit”.
Nie używaj set
(Jeśli i tak nie planujesz, możesz pominąć tę sekcję).
Kilka innych odpowiedzi zaleca wykonanie pewnej odmiany:
C:\>:: DON'T DO THIS
C:\>set PATH=C:\Program Files\Java\jdk1.7.0_09\bin
Nie rób tego. Istnieje kilka poważnych problemów z tym poleceniem:
- To polecenie usuwa wszystko inne od
PATH
i zastępuje go ze ścieżką Java. Po wykonaniu tego polecenia może się okazać, że różne inne polecenia nie działają.
- Twoja ścieżka Java prawdopodobnie nie jest
C:\Program Files\Java\jdk1.7.0_09\bin
- prawie na pewno masz nowszą wersję JDK, która miałaby inną ścieżkę.
- Nowe
PATH
dotyczy tylko bieżącej sesji cmd. Będziesz musiał ponownie wprowadzić set
polecenie za każdym razem, gdy otworzysz wiersz polecenia.
Punkty 1 i 2 można rozwiązać dzięki tej nieco lepszej wersji:
C:\>:: DON'T DO THIS EITHER
C:\>set PATH=C:\Program Files\Java\<enter the correct Java folder here>\bin;%PATH%
Ale ogólnie jest to po prostu zły pomysł.
Znajdź ścieżkę Java
Właściwy sposób zaczyna się od znalezienia miejsca instalacji Java. Zależy to od sposobu zainstalowania Java.
Instalator exe
Zainstalowałeś Javę, uruchamiając program instalacyjny. Instalator Oracle umieszcza wersje Java w C:\Program Files\Java\
(lub C:\Program Files (x86)\Java\
). Za pomocą Eksploratora plików lub wiersza polecenia przejdź do tego katalogu.
Każdy podfolder reprezentuje wersję Java. Jeśli jest tylko jeden, to go znalazłeś. W przeciwnym razie wybierz ten, który wygląda jak nowsza wersja. Upewnij się, że nazwa folderu zaczyna się od jdk
(w przeciwieństwie do jre
). Wejdź do katalogu.
Następnie wprowadź bin
katalog tego.
Jesteś teraz we właściwym katalogu. Skopiuj ścieżkę. W Eksploratorze plików kliknij pasek adresu. W wierszu polecenia skopiuj monit.
Wynikowa ścieżka Java powinna mieć postać (bez cudzysłowów):
C:\Program Files\Java\jdkxxxx\bin\
Plik zip
Pobrałeś plik .zip zawierający JDK. Wyodrębnij go w losowe miejsce, gdzie nie będzie ci przeszkadzało; C:\Java\
jest akceptowalnym wyborem.
Następnie zlokalizuj bin
folder gdzieś w nim.
Jesteś teraz we właściwym katalogu. Skopiuj swoją ścieżkę. To jest ścieżka Java.
Pamiętaj, aby nigdy nie przenosić folderu, ponieważ spowodowałoby to unieważnienie ścieżki.
Otwórz okno ustawień
To jest okno dialogowe do edycji PATH
. Istnieje wiele sposobów, aby przejść do tego okna dialogowego, w zależności od wersji systemu Windows, ustawień interfejsu użytkownika i tego, jak popsuła się konfiguracja systemu.
Wypróbuj niektóre z nich:
- Start Menu / pole wyszukiwania paska zadań »wyszukaj„ zmienną środowiskową ”
- Win + R »
control sysdm.cpl,,3
- Win + R »
SystemPropertiesAdvanced.exe
» Zmienne środowiskowe
- Eksplorator plików »wpisz w pasek adresu
Control Panel\System and Security\System
» Zaawansowane ustawienia systemu (daleko w lewo, na pasku bocznym) »Zmienne środowiskowe
- Pulpit »kliknij prawym przyciskiem myszy na tym komputerze» Właściwości »Zaawansowane ustawienia systemu» Zmienne środowiskowe
- Menu Start »kliknij prawym przyciskiem myszy Komputer» Właściwości »Zaawansowane ustawienia systemu» Zmienne środowiskowe
- Panel sterowania (tryb ikon) »System» Zaawansowane ustawienia systemu »Zmienne środowiskowe
- Panel sterowania (tryb kategorii) »System i zabezpieczenia» System »Zaawansowane ustawienia systemu» Zmienne środowiskowe
- Pulpit »kliknij prawym przyciskiem Mój komputer» Zaawansowane »Zmienne środowiskowe
- Panel sterowania »System» Zaawansowane »Zmienne środowiskowe
Każde z nich powinno doprowadzić cię do właściwego okna ustawień.
Jeśli korzystasz z systemu Windows 10, Microsoft pobłogosławił cię fantazyjnym nowym interfejsem do edycji PATH
. W przeciwnym razie zobaczysz PATH
pełną chwałę inkrustowaną średnikami, wciśniętą w jedno-wierszowe pole tekstowe. Dołóż wszelkich starań, aby dokonać niezbędnych zmian bez uszkodzenia systemu.
Czysty PATH
Patrzeć PATH
. Prawie na pewno masz dwie PATH
zmienne (z powodu zmiennych środowiskowych użytkownik vs. system). Musisz spojrzeć na oba.
Sprawdź inne ścieżki Java i usuń je. Ich istnienie może powodować różnego rodzaju konflikty. (Na przykład, jeśli masz JRE 8 i JDK 11 w PATH
tej kolejności, to javac
wywoła kompilator Java 11, który utworzy .class
pliki w wersji 55 , ale java
wywoła JVM Java 8, który obsługuje tylko wersję 52, i wystąpią nieobsługiwane błędy wersji i nie będzie można kompilować ani uruchamiać żadnych programów.) Pomiń te problemy, upewniając się, że masz tylko jedną ścieżkę Java PATH
. A gdy już to robisz, równie dobrze możesz odinstalować stare wersje Java . I pamiętaj, że nie musisz mieć zarówno JDK, jak i JRE.
Jeśli tak C:\ProgramData\Oracle\Java\javapath
, usuń to również . Oracle zamierzało rozwiązać problem zepsucia ścieżek Java po aktualizacji, tworząc symboliczne łącze , które zawsze wskazywałoby najnowszą instalację Java. Niestety często kończy się to wskazaniem niewłaściwej lokalizacji lub po prostu nie działa . Lepiej jest usunąć ten wpis i ręcznie zarządzać ścieżką Java.
Teraz jest również dobra okazja do wykonywania ogólnych prac porządkowych PATH
. Jeśli masz ścieżki związane z oprogramowaniem, które nie jest już zainstalowane na komputerze, możesz je usunąć. Możesz także zmieniać kolejność ścieżek (jeśli zależy Ci na takich rzeczach).
Dodać do PATH
Teraz weź ścieżkę Java, którą znalazłeś trzy kroki temu, i umieść ją w systemie PATH
.
Nie powinno mieć znaczenia, gdzie na liście zmierza twoja nowa ścieżka; umieszczenie go na końcu jest dobrym wyborem.
Jeśli używasz interfejsu użytkownika wcześniejszego niż Windows 10, upewnij się, że umieściłeś średniki poprawnie. Powinna być dokładnie jedna oddzielająca każdą ścieżkę na liście.
Naprawdę nie ma tu nic więcej do powiedzenia. Po prostu dodaj ścieżkę PATH
i kliknij OK.
Zestaw JAVA_HOME
W tym momencie równie dobrze możesz ustawić JAVA_HOME
. Jest to kolejna zmienna środowiskowa, która powinna również zawierać ścieżkę Java. Wiele programów Java i innych niż Java, w tym popularne systemy kompilacji Java Maven i Gradle , będą zgłaszać błędy, jeśli nie zostaną poprawnie ustawione.
Jeśli JAVA_HOME
nie istnieje, utwórz ją jako nową systemową zmienną środowiskową. Ustaw ścieżkę do katalogu Java bez bin/
katalogu, tj C:\Program Files\Java\jdkxxxx\
.
Pamiętaj, aby edytować również JAVA_HOME
po aktualizacji Java.
Zamknij i ponownie otwórz wiersz polecenia
Chociaż zmodyfikowałeś PATH
, wszystkie uruchomione programy, w tym cmd, widzą tylko stare PATH
. Wynika to z faktu, że lista wszystkich zmiennych środowiskowych jest kopiowana do programu dopiero po uruchomieniu; następnie sprawdza tylko kopię z pamięci podręcznej.
Nie ma dobrego sposobu na odświeżenie zmiennych środowiskowych cmd , więc po prostu zamknij Wiersz polecenia i otwórz go ponownie. Jeśli używasz IDE, zamknij go i otwórz ponownie.
Zobacz też