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.
Kokeneille lukijoille:
PATH
. Poista vanhat Java-polut.PATH
:iin.JAVA_HOME
.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.
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ä tapahtuu PATH
-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:
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
...
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 tietokoneellani PATH
on:
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
Kun suoritat javac HelloWorld.java
, cmd, kun se huomaa, että javac
ei ole sisäinen komento, etsii järjestelmän PATH
:sta, jota seuraa käyttäjän PATH
. Se menee mekaanisesti jokaiseen luettelossa olevaan hakemistoon ja tarkistaa, onko javac.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 -hakemisto PATH
:iin.
(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 ei javac
.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 suorittaa javac
-ohjelmaa, koska kiintolevylläsi ei ole Java-kääntäjän asennusta. Tarkista Windowsin ohjelmaluettelosta, että Java-paketin nimessä on sanat "Development Kit".set
-asetusta.(Jos et kuitenkaan aio käyttää sitä, voit vapaasti ohittaa tämän osion.)) Useat muut vastaukset suosittelevat jonkin muunnelman suorittamista:
C:\>:: DON'T DO THIS
C:\>set PATH=C:\Program Files\Java\jdk1.7.0_09\bin
Ä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:C:\>:: DON'T DO THIS EITHER
C:\>set PATH=C:\Program Files\Java\<enter the correct Java folder here>\bin;%PATH%
Mutta se on vain yleisesti ottaen huono idea.
Oikea tapa alkaa siitä, että selvitetään, mihin olet asentanut Javan. Tämä riippuu siitä, miten olet asentanut Javan.
Olet asentanut Javan ajamalla asennusohjelman. Oraclen asennusohjelma sijoittaa Java-versiot osoitteeseen C:\Program Files\Java\
(tai C:\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 sanalla jdk
(eikä jre
). Kirjoita hakemisto.
Kirjoita sitten sen bin
-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ä):
C:\Program Files\Java\jdkxxxx\bin\
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 sitten bin
-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.
Tämä on valintaikkuna 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äet PATH
:n täydessä puolipisteellä varustetussa loistossaan, puristettuna yksiriviseen tekstiruutuun. Tee parhaasi tehdessäsi tarvittavat muutokset rikkomatta järjestelmääsi.PATH
Katso PATH
. Sinulla on melkein varmasti kaksi PATH
-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 esimerkiksi PATH
:ssa on JRE 8 ja JDK 11 tässä järjestyksessä, javac
kutsuu Java 11 -kääntäjää, joka luo version 55 .class
-tiedostoja, mutta java
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 on C:\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ä siivousta PATHissa
. 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).
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 polku PATH
:iin ja napsauta OK.
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.
Jos JAVA_HOME
ei ole olemassa, luo se uutena järjestelmäympäristömuuttujana. Aseta se samaan Java-polkuun, jonka lisäsit PATH
:iin.
Muista muokata JAVA_HOME
myös Javan päivittämisen jälkeen.
Vaikka olet muuttanut PATH
:a, kaikki käynnissä olevat ohjelmat, myös cmd, näkevät vain vanhan PATH
: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.
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.