Více na
javac není rozpoznán jako interní nebo externí příkaz, spustitelný program nebo dávkový soubor.
Při pokusu o kompilaci programů v jazyce Java dochází k chybě.
Používám Windows (jedná se o problém specifický pro Windows) a mám nainstalovaný nejnovější JDK.
Pokusil jsem se o řešení zahrnující proměnnou PATH
, ale chyba přetrvává.
Výstup konzoly:
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.
248
3
TL;DR
Pro zkušené čtenáře:
PATH
. Odstraňte staré cesty k Javě.PATH
přidejte novou cestu Java.JAVA_HOME
.Zavřete a znovu otevřete konzolu/IDE.
Vítejte! Setkali jste se s jedním z nejznámějších technických problémů, s nimiž se setkávají začátečníci v jazyce Java: chybové hlášení
'xyz' není rozpoznán jako interní nebo externí příkaz...
. Stručně řečeno, nemáte správně nainstalovanou Javu. Dokončení instalace Javy v systému Windows vyžaduje několik ručních kroků. Tyto kroky musíte provést vždy po instalaci Javy, včetně aktualizace JDK.Proměnné prostředí a
PATH
(Pokud jste již porozuměli, následující tři části klidně přeskočte) (Pokud jste již porozuměli, následující tři části klidně přeskočte). Když spustíte
javac HelloWorld.java
, musí cmd určit, kde se nacházíjavac.exe
. K tomu slouží proměnná prostředíPATH
. Proměnná prostředí je speciální dvojice klíč-hodnota (např.windir=C:\WINDOWS
). Většina z nich je dodávána s operačním systémem a některé jsou vyžadovány pro správnou funkci systému. Jejich seznam je předáván každému programu (včetně cmd) při jeho spuštění. V systému Windows existují dva typy: proměnné prostředí uživatele a proměnné prostředí systému. Proměnné prostředí můžete zobrazit takto:Nejdůležitější proměnnou je
PATH
. Je to seznam cest oddělených znakem;
. Při zadání příkazu do cmd se každý adresář v seznamu prohledá, zda v něm není odpovídající spustitelný soubor. Na mém počítači jePATH
následující:Když spustíte
javac HelloWorld.java
, cmd po zjištění, žejavac
není interní příkaz, prohledá systémovýPATH
následovaný uživatelskýmPATH
. Mechanicky vstoupí do každého adresáře v seznamu a zkontroluje, zda se v něm nacházíjavac.com
,javac.exe
,javac.bat
atd.. Když najdejavac
, spustí jej. Když nenajde, vypíše'javac' není rozpoznán jako interní nebo externí příkaz, spustitelný program nebo dávkový soubor.
Adresář se spustitelnými soubory jazyka Java musíte přidat doPATH
.JDK vs. JRE
(Pokud tomu již rozumíte, tuto část klidně přeskočte.) Při stahování Javy je vám nabídnuta volba mezi:
java
, ale nejavac
.javu
, takjavac
a řadu dalších vývojových nástrojů. JDK je nadmnožinou JRE. Musíte se ujistit, že máte nainstalován JDK. Pokud jste nainstalovali pouze JRE, nemůžete spustitjavac
, protože nemáte na pevném disku nainstalovaný kompilátor Javy. Zkontrolujte seznam programů systému Windows a ujistěte se, že název balíku Java'obsahuje slova "Development Kit".Nepoužívejte
set
(Pokud jste to stejně neměli v plánu, klidně tuto část přeskočte.). Několik dalších odpovědí doporučuje provést nějakou variantu:
To nedělejte. S tímto příkazem je několik zásadních problémů:
PATH
a nahradí ji cestou k Javě. Po provedení tohoto příkazu se může stát, že nebudou fungovat různé další příkazy.C:\Program Files\Java\jdk1.7.0_09\bin
- téměř určitě máte novější verzi JDK, která by měla jinou cestu.PATH
platí pouze pro aktuální relaci příkazů cmd. Při každém otevření Příkazového řádku budete muset znovu zadat příkazset
. Body č. 1 a 2 lze vyřešit pomocí této o něco lepší verze:Ale obecně je to prostě špatný nápad.
Zjistěte cestu k Javě
Správný postup začíná zjištěním, kde máte nainstalovanou Javu. To závisí na tom, jak jste Javu nainstalovali.
Instalační program Exe
Javu jste nainstalovali spuštěním instalačního programu. Instalační program společnosti Oracle umisťuje verze Javy do složky
C:\Program Files\Java\
(neboC:\Program Files (x86)\Java\
). Pomocí Průzkumníka souborů nebo Příkazového řádku přejděte do tohoto adresáře. Každá podsložka představuje verzi jazyka Java. Pokud je zde pouze jedna, našli jste ji. V opačném případě vyberte tu, která vypadá jako novější verze. Ujistěte se, že název složky začíná najdk
(na rozdíl odjre
). Zadejte adresář. Poté zadejte adresářbin
tohoto adresáře. Nyní jste ve správném adresáři. Zkopírujte cestu. Pokud jste v Průzkumníku souborů, klikněte na adresní řádek. Pokud v Příkazovém řádku, zkopírujte výzvu. Výsledná cesta v jazyce Java by měla mít tvar (bez uvozovek):Zip soubor
Stáhli jste soubor .zip obsahující JDK. Rozbalte jej na nějaké náhodné místo, kde vám nebude překážet; přijatelnou volbou je
C:\Java\
. Pak v něm někde najděte složkubin
. Nyní jste ve správném adresáři. Zkopírujte jeho cestu. Toto je cesta k Javě. Nezapomeňte složku nikdy nepřesouvat, protože by se tím cesta zneplatnila.Otevřete dialogové okno nastavení
PATH
. Existuje mnoho způsobů, jak se k tomuto dialogu dostat, v závislosti na verzi systému Windows, nastavení uživatelského rozhraní a na tom, jak moc je konfigurace systému zpřeházená. Vyzkoušejte některé z nich:kontrola sysdm.cpl,,3
SystemPropertiesAdvanced.exe
» Proměnné prostředíOvládací panely\Systém a zabezpečení\Systém
» Rozšířená nastavení systému (zcela vlevo, v postranním panelu) » Proměnné prostředíPATH
. V opačném případě uvidítePATH
v plné kráse se středníky, vtěsnaný do jednořádkového textového pole. Snažte se provést potřebné úpravy, aniž byste si rozbili systém.Vyčistěte
PATH
Podívejte se na
PATH
. Téměř určitě máte dvě proměnnéPATH
(kvůli uživatelským a systémovým proměnným prostředí). Musíte se podívat na obě. Zkontrolujte, zda v ní nejsou další cesty k Javě, a odstraňte je. Jejich existence může způsobit nejrůznější konflikty. (Například pokud máte vPATH
JRE 8 a JDK 11 v tomto pořadí, pakjavac
vyvolá kompilátor Javy 11, který vytvoří soubory.class
verze 55, alejava
vyvolá JVM Javy 8, který podporuje pouze verzi 52, a vy se setkáte s unsupported version errors a nebudete moci zkompilovat a spustit žádný program.) Těmto problémům se vyhněte tím, že se ujistíte, že máte vPATH
pouze jednu cestu k Javě. A když už jste v tom, můžete také odinstalovat staré verze Javy. A nezapomeňte, že nemusíte mít jak JDK, tak JRE. Pokud máteC:\ProgramData\Oracle\Java\javapath
, odstraňte i ten. Společnost Oracle zamýšlela vyřešit problém s přerušením cesty k Jave po aktualizaci vytvořením symbolického odkazu, který by vždy ukazoval na nejnovější instalaci Javy. Bohužel často končí tak, že ukazuje na špatné umístění nebo prostě nefunguje. Je lepší tuto položku odstranit a cestu k Javě spravovat ručně. Nyní je také vhodná příležitost provést obecný úklid vPATH
. Pokud máte cesty vztahující se k softwaru, který již není na vašem počítači nainstalován, můžete je odstranit. Můžete také zamíchat pořadím cest (pokud vám na takových věcech záleží).Přidat do
PATH
Nyní vezměte cestu k Javě, kterou jste našli před třemi kroky, a umístěte ji do systémového
PATH
. Nemělo by záležet na tom, kam v seznamu novou cestu umístíte; umístění na konec je dobrá volba. Pokud používáte uživatelské rozhraní před systémem Windows 10, ujistěte se, že jste středníky umístili správně. Každou cestu v seznamu by měl oddělovat přesně jeden. Tady už opravdu není moc co říct. Jednoduše přidejte cestu doPATH
a klikněte na OK.Nastavte
JAVA_HOME
Když už jste v tom, můžete také nastavit
JAVA_HOME
. Jedná se o další proměnnou prostředí, která by měla rovněž obsahovat cestu k Javě. Mnoho javovských i nejjavovských programů, včetně populárního javovského build systému Gradle, vyhodí chybu, pokud není správně nastavena. PokudJAVA_HOME
neexistuje, vytvořte ji jako novou systémovou proměnnou prostředí. Nastavte ji na stejnou cestu k jazyku Java, kterou jste přidali doPATH
. Nezapomeňte upravitJAVA_HOME
také po aktualizaci Javy.Zavřete a znovu otevřete Příkazový řádek
Přestože jste změnili
PATH
, všechny spuštěné programy včetně cmd vidí pouze starouPATH
. Je to proto, že seznam všech proměnných prostředí se do programu zkopíruje až při zahájení jeho provádění; poté program konzultuje pouze kopii uloženou v mezipaměti. Neexistuje žádný dobrý způsob, jak obnovit cmd'proměnné prostředí, takže jednoduše zavřete Příkazový řádek a otevřete jej znovu. Pokud používáte IDE, zavřete a znovu otevřete také toto prostředí.Viz také
Chybně jste zadal příkaz
set
- vynechal jste zpětné lomítko zaC:
. Mělo by to být:Pokud příkaz java funguje a máte problém s javacem, pak nejprve zkontrolujte, zda je v adresáři bin souboru jdk soubor javac.exe. Pokud soubor javac.exe existuje, nastavte systémovou proměnnou
JAVA_HOME
.