Lisää
javacia ei tunnisteta sisäiseksi tai ulkoiseksi komennoksi, toimivaksi ohjelmaksi tai eräajotiedostoksi.
Minulla on virhe, kun yritän kääntää Java-ohjelmia.
Käytössäni on Windows (tämä on Windows-kohtainen ongelma) ja minulla on uusin JDK asennettuna.
Olen yrittänyt ratkaista ongelman muuttujan PATH
avulla, mutta virhe jatkuu edelleen.
Konsolin tuloste:
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
Kokeneille lukijoille:
PATH
. Poista vanhat Java-polut.PATH
:iin.JAVA_HOME
.Sulje ja avaa konsoli/IDE uudelleen.
Tervetuloa! Olet kohdannut yhden pahamaineisimmista teknisistä ongelmista, joita Javan aloittelijat kohtaavat:
'xyz' ei tunnisteta sisäiseksi tai ulkoiseksi komennoksi...
-virheilmoituksen. Lyhyesti sanottuna, et ole asentanut Javaa oikein. Javan asennuksen viimeistely Windowsissa vaatii joitakin manuaalisia vaiheita. Nämä vaiheet on suoritettava aina Javan asennuksen jälkeen, myös JDK:n päivittämisen jälkeen.Ympäristömuuttujat ja
PATH
.(Jos ymmärrät tämän jo, voit vapaasti ohittaa seuraavat kolme osiota.). Kun suoritat
javac HelloWorld.java
, cmd:n on määritettävä, missäjavac.exe
sijaitsee. Tämä tapahtuuPATH
-ympäristömuuttujan avulla. ympäristömuuttuja on erityinen avain-arvopari (esim.windir=C:\WINDOWS
). Useimmat muuttujat tulivat käyttöjärjestelmän mukana, ja jotkut niistä ovat välttämättömiä järjestelmän moitteettoman toiminnan kannalta. Luettelo niistä välitetään jokaiselle ohjelmalle (myös cmd:lle) sen käynnistyessä. Windowsissa on kahta tyyppiä: käyttäjän ympäristömuuttujat ja järjestelmän ympäristömuuttujat. Voit nähdä ympäristömuuttujasi näin:Tärkein muuttuja on
PATH
. Se on luettelo poluista, jotka on erotettu toisistaan;
:llä. Kun komento syötetään cmd:hen, jokainen luettelossa oleva hakemisto selataan, jotta löydetään vastaava suoritettava ohjelma. Minun tietokoneellaniPATH
on:Kun suoritat
javac HelloWorld.java
, cmd, kun se huomaa, ettäjavac
ei ole sisäinen komento, etsii järjestelmänPATH
:sta, jota seuraa käyttäjänPATH
. Se menee mekaanisesti jokaiseen luettelossa olevaan hakemistoon ja tarkistaa, onkojavac.com
,javac.exe
,javac.bat
jne. läsnä. Kun se löytääjavac
, se suorittaa sen. Kun se ei löydä, se tulostaa'javac' ei tunnista sisäistä tai ulkoista komentoa, toimivaa ohjelmaa tai erätiedostoa.
. Sinun on lisättävä Java executables -hakemistoPATH
:iin.JDK vs. JRE
(Jos ymmärrät tämän jo, voit vapaasti ohittaa tämän jakson.) Kun lataat Javaa, sinulle tarjotaan mahdollisuus valita seuraavien vaihtoehtojen välillä:
java
mutta eijavac
.javan
ettäjavac
ja monia muita kehitystyökaluja. JDK on JRE:n superset. Sinun on varmistettava, että olet asentanut JDK:n**. Jos olet asentanut vain JRE:n, et voi suorittaajavac
-ohjelmaa, koska kiintolevylläsi ei ole Java-kääntäjän asennusta. Tarkista Windowsin ohjelmaluettelosta, että Java-paketin nimessä on sanat "Development Kit".Älä käytä
set
-asetusta.(Jos et kuitenkaan aio käyttää sitä, voit vapaasti ohittaa tämän osion.)) Useat muut vastaukset suosittelevat jonkin muunnelman suorittamista:
Älä tee sitä. Tuossa komennossa on useita suuria ongelmia:
PATHista
ja korvaa sen Java-polulla. Tämän komennon suorittamisen jälkeen saatat huomata, että monet muut komennot eivät toimi.C:\Program Files\Java\jdk1.7.0_09\bin
- sinulla on lähes varmasti uudempi versio JDK:sta, jonka polku on eri.PATH
koskee** vain nykyistä cmd-istuntoa. Sinun on syötettäväset
-komento uudelleen joka kerta, kun avaat komentokehotteen. Kohdat #1 ja #2 voidaan ratkaista tällä hieman paremmalla versiolla:Mutta se on vain yleisesti ottaen huono idea.
Etsi Javan polku
Oikea tapa alkaa siitä, että selvitetään, mihin olet asentanut Javan. Tämä riippuu siitä, miten olet asentanut Javan.
Exe-asennusohjelma
Olet asentanut Javan ajamalla asennusohjelman. Oraclen asennusohjelma sijoittaa Java-versiot osoitteeseen
C:\Program Files\Java\
(taiC:\Program Files (x86)\Java\
). Siirry File Explorerilla tai komentorivillä kyseiseen hakemistoon. Kukin alikansio edustaa Java-versiota. Jos versioita on vain yksi, olet löytänyt sen. Muussa tapauksessa valitse se, joka näyttää uudemmalta versiolta. Varmista, että kansion nimi alkaa sanallajdk
(eikäjre
). Kirjoita hakemisto. Kirjoita sitten senbin
-hakemisto. Olet nyt oikeassa hakemistossa. Kopioi polku. Jos olet File Explorerissa, napsauta osoitepalkkia. Jos komentorivillä, kopioi kehote. Tuloksena olevan Java-polun pitäisi olla muotoa (ilman lainausmerkkejä):Zip-tiedosto
Olet ladannut .zip-tiedoston, joka sisältää JDK:n. Pura se johonkin satunnaiseen paikkaan, jossa se ei ole tielläsi;
C:\Java\
on hyväksyttävä valinta. Etsi sittenbin
-kansio jostain sen sisältä. Olet nyt oikeassa hakemistossa. Kopioi sen polku. Tämä on Javan polku. Muista, ettet koskaan siirrä kansiota, koska se mitätöisi polun.Avaa asetusikkuna
PATH
:n muokkaamista varten. Tuohon valintaikkunaan pääsee monin eri tavoin riippuen Windows-versiostasi, käyttöliittymäasetuksistasi ja siitä, kuinka sekaisin järjestelmäkonfiguraatiosi on. Kokeile joitakin näistä:control sysdm.cpl,,3
.SystemPropertiesAdvanced.exe
» YmpäristömuuttujatControl Panel\System and Security\System
» Advanced System Settings (aivan vasemmalla, sivupalkissa) » Ympäristömuuttujat.PATHia
. Muussa tapauksessa näetPATH
:n täydessä puolipisteellä varustetussa loistossaan, puristettuna yksiriviseen tekstiruutuun. Tee parhaasi tehdessäsi tarvittavat muutokset rikkomatta järjestelmääsi.Clean
PATH
Katso
PATH
. Sinulla on melkein varmasti kaksiPATH
-muuttujaa (käyttäjän ja järjestelmän ympäristömuuttujien vuoksi). Sinun on tarkasteltava molempia. Tarkista muut Java-polut ja poista ne. Niiden olemassaolo voi aiheuttaa kaikenlaisia konflikteja. (Jos esimerkiksiPATH
:ssa on JRE 8 ja JDK 11 tässä järjestyksessä,javac
kutsuu Java 11 -kääntäjää, joka luo version 55.class
-tiedostoja, muttajava
kutsuu Java 8 JVM:ää, joka tukee vain versiota 52, ja sinulla ilmenee unsupported version errors, etkä pysty kääntämään ja ajamaan ohjelmia). Vältä nämä ongelmat varmistamalla, ettäPATH
:ssa on vain yksi Java-polku. Ja kun kerran olet siinä, voit myös poistaa vanhat Java-versiot. Muista myös, että sinulla ei tarvitse olla sekä JDK:ta että JRE:tä. Jos sinulla onC:\ProgramData\Oracle\Java\javapath
, poistakaa sekin. Oracle aikoi ratkaista ongelman, että Java-polut rikkoutuvat päivitysten jälkeen, luomalla symbolisen linkin, joka osoittaisi aina uusimpaan Java-asennukseen. Valitettavasti se päätyy usein osoittamaan väärään paikkaan tai ei yksinkertaisesti toimi. On parempi poistaa tämä merkintä ja hallita Java-polkua manuaalisesti. Nyt on myös hyvä tilaisuus tehdä yleistä siivoustaPATHissa
. Jos sinulla on polkuja, jotka liittyvät ohjelmistoihin, joita ei enää asenneta tietokoneellesi, voit poistaa ne. Voit myös sekoittaa polkujen järjestystä (jos välität sellaisista asioista).Add to
PATH
Ota nyt kolme askelta sitten löytämäsi Java-polku ja lisää se järjestelmän
PATH
:iin. Sillä ei pitäisi olla merkitystä, mihin kohtaan listaa uusi polku tulee; sen sijoittaminen loppuun on hyvä valinta. Jos käytät Windows 10:tä edeltävää käyttöliittymää, varmista, että olet asettanut puolipisteet oikein. Luettelon jokaisen polun välissä pitäisi olla tasan yksi. Tässä ei oikeastaan ole paljon muuta sanottavaa. Lisää vain polkuPATH
:iin ja napsauta OK.Aseta
JAVA_HOME
.Kun kerran olet siinä, voit yhtä hyvin asettaa myös
JAVA_HOME
. Tämä on toinen ympäristömuuttuja, jonka pitäisi myös sisältää Javan polku. Monet Java- ja muut kuin Java-ohjelmat, mukaan lukien suosittu Java-rakennusjärjestelmä Gradle, heittävät virheitä, jos sitä ei ole asetettu oikein. JosJAVA_HOME
ei ole olemassa, luo se uutena järjestelmäympäristömuuttujana. Aseta se samaan Java-polkuun, jonka lisäsitPATH
:iin. Muista muokataJAVA_HOME
myös Javan päivittämisen jälkeen.Sulje ja avaa komentorivi uudelleen
Vaikka olet muuttanut
PATH
:a, kaikki käynnissä olevat ohjelmat, myös cmd, näkevät vain vanhanPATH
:n. Tämä johtuu siitä, että luettelo kaikista ympäristömuuttujista kopioidaan ohjelmaan vasta, kun se aloittaa suorituksen; sen jälkeen se käyttää vain välimuistissa olevaa kopiota. Ei ole hyvää tapaa päivittää cmd'n ympäristömuuttujia, joten sulje komentokehote ja avaa se uudelleen. Jos käytät IDE-ohjelmaa, sulje myös se ja avaa se uudelleen.Katso myös
Kirjoitit
set
-komennon väärin - jätit pois vinoviivanC:
:n jälkeen. Sen pitäisi olla:Jos java-komento toimii ja javacin kanssa on ongelmia, tarkista ensin, että jdk:n bin-hakemistossa on javac.exe-tiedosto vai ei. Jos javac.exe-tiedosto on olemassa, aseta
JAVA_HOME
järjestelmämuuttujaksi.