Wystąpił błąd podczas próby kompilacji programów Java.
Korzystam z systemu Windows (jest to problem specyficzny dla systemu Windows) i mam zainstalowany najnowszy pakiet JDK.
Próbowałem rozwiązania dotyczącego PATH
zmiennej, ale błąd nadal występuje.
Dane wyjściowe konsoli:
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.
java
path
environment-variables
command-prompt
javac
użytkownik987137
źródło
źródło
Odpowiedzi:
TL; DR
Dla doświadczonych czytelników:
C:\Program Files\Java\jdkxxxx\bin\
PATH
. Usuń stare ścieżki Java.PATH
.JAVA_HOME
.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ć, gdziejavac.exe
się znajduje. Dokonuje się tego zaPATH
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:
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:Po uruchomieniu
javac HelloWorld.java
cmd, gdy zorientujesz się, żejavac
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, czyjavac.com
,javac.exe
,javac.bat
itp obecny jest. Gdy znajdziejavac
, 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
jednak niejavac
.java
ijavac
, 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:
Nie rób tego. Istnieje kilka poważnych problemów z tym poleceniem:
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ą.C:\Program Files\Java\jdk1.7.0_09\bin
- prawie na pewno masz nowszą wersję JDK, która miałaby inną ścieżkę.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:
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\
(lubC:\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 dojre
). 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):
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:
control sysdm.cpl,,3
SystemPropertiesAdvanced.exe
» Zmienne środowiskoweControl Panel\System and Security\System
» Zaawansowane ustawienia systemu (daleko w lewo, na pasku bocznym) »Zmienne środowiskoweKaż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 zobaczyszPATH
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 dwiePATH
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, tojavac
wywoła kompilator Java 11, który utworzy.class
pliki w wersji 55 , alejava
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ę JavaPATH
. 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 bezbin/
katalogu, tjC:\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 starePATH
. 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ż
źródło
spróbuj tego .. Też miałem, ale teraz rozwiązałem w XP ..
źródło
Źle wpisałeś
set
komendę - później nie trafiłeś ukośnikaC:
. Powinno być:źródło
C:\Program Files (x86)\Java\jdk1.7.0
? Jeśli tak, to co się dzieje, jeśli niecd C:\Program Files (x86)\Java\jdk1.7.0\bin
, a potemjavac -version
?Uruchom następujące polecenie w wierszu polecenia:
set Path="C:\Program Files\Java\jdk1.7.0_09\bin"
lubset PATH="C:\Program Files\Java\jdk1.7.0_09\bin"
Próbowałem tego i działa dobrze.
źródło
Jeśli polecenie java działa i pojawia się problem z javac. następnie najpierw sprawdź, czy w katalogu bin jdk jest plik javac.exe. Jeśli plik javac.exe istnieje, ustaw go
JAVA_HOME
jako zmienną systemową.źródło
Sprawdź zmienne środowiskowe.
W moim przypadku ustawiłem JAVA_HOME w zmiennych systemowych, a także w zmiennych mojego konta użytkownika, a ta ostatnia została ustawiona na niewłaściwą wersję Java . Miałem również ten sam problem ze zmienną Path.
Po usunięciu JAVA_HOME ze zmiennych mojego konta użytkownika i usunięciu niewłaściwej ścieżki ze zmiennej ścieżki działało to poprawnie.
źródło