javac nie działa w wierszu poleceń systemu Windows

132

Próbuję użyć javacz wierszem poleceń systemu Windows, ale to nie działa.

Po dodaniu katalogu "C:\Program Files\Java\jdk1.6.0_16\bin\"na końcu PATHzmiennej środowiskowej javapolecenie działa dobrze, ale użycie javacdaje mi następujący błąd:

„javac” nie jest rozpoznawane jako polecenie wewnętrzne lub zewnętrzne, program operacyjny lub plik wsadowy.

Domenic
źródło

Odpowiedzi:

162

Jeśli dodałeś go w panelu sterowania, gdy wiersz polecenia był otwarty, nie wpłynie to na bieżący wiersz polecenia. Musisz wyjść i ponownie otworzyć lub po prostu:

set "path=%path%;c:\program files\java\jdk1.6.0_16\bin"

W celu sprawdzenia wykonaj:

echo %path%

z wiersza poleceń i daj nam znać, co to jest.

W przeciwnym razie upewnij się, że w tym katalogu znajduje się javac, próbując:

"c:\program files\java\jdk1.6.0_16\bin\javac.exe"

z wiersza polecenia. Możesz również określić, który plik wykonywalny (jeśli w ogóle) jest używany za pomocą polecenia:

for %i in (javac.exe) do @echo %~$PATH:i

Jest to zgrabna sztuczka podobna do poleceń whichi / lub whencew niektórych systemach operacyjnych typu UNIX.

paxdiablo
źródło
11
ach tak, wszystko, co musiałem zrobić, to ponownie otworzyć wiersz polecenia i działało dobrze, dzięki!
Domenic
1
+1. Polecenie „for% i in (java.exe) do @echo% ~ $ PATH: i” właśnie uratowało mój dzień. Jestem sporadycznym użytkownikiem systemu Windows i po prostu nie wiedziałem, że w c: \ windows \ system może znajdować się kolejny ukryty plik java.exe :)
david a.
1
Powyższe polecenie set path nie działa dla mnie w systemie Windows 7. Musiałem użyć set path = "% path%; c: \ program files \ java \ jdk1.6.0_16 \ bin. To jest bez cudzysłowów! Nie znam z wierszem poleceń systemu Windows, ale wygląda na to, że cudzysłowy są zachowane, więc umieszczenie ich w% path% sprawi, że będzie całkowicie bezużyteczny.
user716468,
@ user716468, Istnieje sposób GUI do zrobienia tego w systemie Windows zamiast w wierszu poleceń. Jeśli korzystasz z systemu Windows 7, po prostu wpisz var w wyszukiwaniu menu Start i kliknij Edytuj zmienne środowiskowe. Jeśli korzystasz z systemu Windows XP, kliknij prawym przyciskiem myszy Mój komputer, kliknij właściwości, przejdź do zakładki zaawansowane i kliknij przycisk Zmienne środowiskowe w dolnej części. Tam możesz znaleźć dwa pola listy. Znajdź tę z nazwą PATH z dolnej listy i kliknij Edytuj. Teraz dołącz ścieżkę do swojego JDK poprzedzoną średnikiem. Jesteś skończony!
fz_salam
istnieje również polecenie „gdzie” w ostatnich wierszach poleceń systemu Windows
x29a
87

System operacyjny Windows przeszukuje bieżący katalog i katalogi wymienione w zmiennej środowiskowej PATH w poszukiwaniu programów wykonywalnych. Programy JDK (takie jak kompilator Java javac.exe i środowisko wykonawcze Java java.exe) znajdują się w katalogu „\ bin” (gdzie oznacza katalog z zainstalowanym pakietem JDK, np. C: \ Program Files \ Java \ jdk1.8.0_xx). Musisz uwzględnić katalog „\ bin” w PATH.

Aby edytować zmienną środowiskową PATH w systemie Windows XP / Vista / 7/8:

  1. Panel sterowania ⇒ System ⇒ Zaawansowane ustawienia systemu

  2. Przejdź do zakładki „Zaawansowane” ⇒ Zmienne środowiskowe

  3. W „Zmienne systemowe” przewiń w dół, aby wybrać „ŚCIEŻKA” ⇒ Edytuj

((teraz przeczytaj poniższe 3 razy, zanim przejdziesz dalej, NIE MA CZYNNOŚCI ))

W polu "Wartość zmiennej" WSTAW "c: \ Program Files \ Java \ jdk1.8.0_xx \ bin" (Zastąp xx numerem aktualizacji i POTWIERDŹ, że jest to katalog binarny twojego JDK !!!) PRZED wszystkimi istniejącymi katalogów, po których następuje średnik (;), który oddziela katalog binarny JDK od pozostałych istniejących katalogów. NIE USUWAJ żadnych istniejących wpisów; w przeciwnym razie niektóre istniejące aplikacje mogą nie działać.

Variable name  : PATH
Variable value : c:\Program Files\Java\jdk1.8.0_xx\bin;[existing entries...]

Zrzut ekranu

mikrofon
źródło
W kroku 4. stwierdziłem, że muszę wybrać nie jre <yournumber>, ale jdk <yournumber>. Wtedy wszystko inne działało dobrze.
Morgan Kenyon
Schludnie i wyraźnie! Najlepsza odpowiedź. Pracował dla mnie.
M_R_K
W moim przypadku dla kroku 4 otworzyłem jdk. W zasadzie miałem to dla PATH: C: \ Program Files \ Java \ jdk1.7.0_67 \ bin. javac.exe nie znajdował się w jre, ale w jdk.
sedeh
Działa dla mnie :)
RAJESH KUMAR ARUMUGAM
35

Po długiej pracy w Google dowiedziałem się, że javac.exe będzie w JDK (C: \ Program Files \ Java \ jdk (numer wersji) \ bin), a nie w JRE (C: \ Program Files (x86) \ Java \ jre7 \ bin) „JRE nie jest dostarczane z kompilatorem. To (JRE) jest po prostu środowiskiem wykonawczym Java. Potrzebujesz zestawu programistycznego Java”. w celu użycia kompilatora javac

javac nie będzie działać, jeśli wskażesz bin wewnątrz jre

Aby używać javac w cmd, w systemie musi być zainstalowany JDK ...

W przypadku ścieżki javac

ścieżka = C: \ Program Files (x86) \ Java \ jre7 \ bin, to jest złe

ścieżka = C: \ Program Files \ Java \ jdk (numer wersji) \ bin to jest poprawne

Upewnij się, że plik „javac.exe” znajduje się w folderze „C: \ Program Files \ Java \ jdk (numer wersji) \ bin”

Nie daj się pomylić z JRE i JDK, oba są całkowicie różne

Jeśli nie masz JDK, pobierz pls z tego linku

https://jdk.java.net/

lub

http://www.oracle.com/technetwork/java/javase/downloads/index.html

wątek referencyjny dla JDK VS JRE Jaka jest różnica między JDK i JRE?

TechDog
źródło
6

Wiem, że może to nie być twój konkretny błąd, ale kiedyś miałem wiodącą spację na mojej ścieżce i java działałaby, ale javac nie.

Bez względu na to, co jest warte, radzę mędrca: „Zbadaj uważnie swoją ścieżkę”.

Sam
źródło
5

Wypróbuj rozwiązania tutaj: http://techdem.centerkey.com/2009/05/javahome-command-script.html

Są one znacznie bardziej odporne na zmiany - na przykład podczas aktualizacji JDK lub JRE, ponieważ nie ma zakodowanej ścieżki.

Szybkim rozwiązaniem (jeśli nie chcesz czytać bloga) jest

C:\>for /d %i in ("\Program Files\Java\jdk*") do set JAVA_HOME=%i
C:\>set PATH=%PATH%;%JAVA_HOME%

Następnie możesz dodać te wiersze do skryptu uruchamiania / logowania.

Jason
źródło
2
Aby wywołać javac w ten sposób, musiałem użyć "set PATH =% PATH%;% JAVA_HOME% \ bin" (zwróć uwagę na dodany \ bin).
user31389
4

Po prostu musiałem to zrobić, aby to działało w systemie Windows 7 64.

Otwórz wiersz poleceń (cmd.exe) i wpisz:

set CLASSPATH=C:\Program Files\Java\jdk1.7.0_01\bin

Upewnij się, że ponownie otworzyłeś wszystkie uruchomione okna wiersza polecenia, aby zaktualizować również zmienną środowiskową.

Ryan Summey
źródło
1
Myślę, że tutaj lepsze jest rozbrojenie ścieżki klas. Nie użyłbym zmiennej CLASSPATH, szczególnie nie w systemie Windows, gdzie jest ona globalna i wpływa na wiele środowisk JRE ...
eckes
4

Okej, to nie zawsze może tak być, ale wielu z nas popełniło ten błąd w przeszłości i niewielu z nich nadal nie jest tego świadomych, co oznacza, że ​​za każdym razem, gdy dołączasz ścieżkę (dowolną ścieżkę) do dowolnej zmiennej środowiskowej, prawdopodobnie naciśniesz klawisz spacji zaraz po „średniku” (jak zwykle po „kropce” podczas pisania w edytorze).

Spowoduje to utworzenie wiodącej spacji w ścieżce, np. „C: \ Program Files \ Java \ jdk1.6.0 \ bin” i dlatego „javac.exe” nie zostanie znaleziony przez system.

Malay Desai
źródło
2

Zmień folder „jdk1.7.0_45” „jdk1_7_0_60” i zaktualizuj ścieżkę w środowisku Windows. W przeciwnym razie ścieżka ignoruje kropkę z przodu, która oznacza ukryty plik, więc folder nie jest wyświetlany w ciągach PATH.

NewDev
źródło
0

"; C: \ Program Files \ Java \ jdk1.6.0 \ bin" czasami możesz zapomnieć o wstawieniu średnika do ostatniej istniejącej ścieżki.

Sundararajan wasuvan
źródło
0

Napotkałem dokładnie ten sam problem, który działałby java, ale javac nie wyświetlałby monitu cmd w Windows 8.

Problem wystąpił bo zapomniałem usunąć '>'na końcu nazwy ścieżki czyli było tak:

C:\Program Files\Java\jdk*\bin>

gdzie miało być tak:

C:\Program Files\Java\jdk*\bin
Kevin
źródło
0

Ścieżka zostanie ustawiona tylko dla konta administratora. Dlatego ważne jest, aby uruchomić wiersz polecenia jako administrator, jeśli jeszcze nie jesteś.


źródło
0

Upewnij się, że nie zezwalasz na spacje (spacje) między ścieżkami w zmiennej Path. Mój problem polegał na tym, że miałem spację i uważam, że Windows potraktował to jako NULL i nie odczytał mojej ścieżki dla Javy.

TRHUMMEL
źródło
0

Miałem ten sam problem zamieszczony w tym tytule. Java działałaby, ale javacnie działałaby w wierszu poleceń systemu Windows ( cmd.exe).

Dla mnie było to po prostu to, że wstawiłem spację podczas dodawania C:\Program Files\Java\jdk1.8.0\binna końcu mojej %PATH%zmiennej środowiskowej.
Usuń spację między ;następną ścieżką pliku.

Taiton
źródło
0

Doceniam to, że to stare pytanie, ale moje rozwiązanie nie było tutaj odpowiedzią, więc opublikuj je na wypadek, gdyby ktoś inny spróbował całej reszty.

W moim przypadku poprzednia instalacja środowiska Java JRE (w ProgramData / Oracle / Java) miała zmienną ścieżki na górze mojej listy zmiennych ścieżki. Zawartość tej ścieżki „Oracle” miała plik java.exe, ale nie javac.exe. Dodałem moją pełną ścieżkę do JDK na górę listy zmiennych ścieżek, przed tą „Oracle”, a następnie wybrałem javac.exe oraz java.

Neil
źródło
0
for /d %i in ("\Program Files\Java\jdk*") do set JAVA_HOME=%i
set JAVA_HOME

to rozwiązanie zadziałało dla mnie

Cristian Agudelo
źródło
Proponuję dodać więcej adnotacji bezpośrednio do odpowiedzi, zamiast podawać tylko link: link może zostać uszkodzony. Pozdrawiam
YakovL
-3

Kiedy próbowałem zmienić .java na .class, polecenie Javac nie działało. Uruchomiłem go, przechodząc do C: \ Program Files (x86) \ Java \ jdk1.7.0_04 \ bin i kiedy byłem w tym katalogu, wpisałem Javac.exe C \ Test \ test.java i utworzyłem klasę z tym taktyka. Wypróbuj to.

Ktoś
źródło
-7

Podaj jako „C: \ Program Files \ Java \ jdk1.6.0_16 \ bin”. Usuń lewy ukośnik, który zadziała

Valli
źródło
2
Nie sądzę, że to prawda. Mogę ustawić ścieżkę na nic innego jak „C: \ Program Files \ Java \ jdk1.6.0_16 \ bin \” (z końcowym ukośnikiem) i nadal działa dobrze.
paxdiablo