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.

TL;DR

Kokeneille lukijoille:

  1. Etsi Java-polku; se näyttää tältä: Java\jdkxxxxxxxx\bin\".
  2. Etsi aloitusvalikosta "ympäristömuuttuja" avataksesi valintaikkunan.
  3. Tutki PATH. Poista vanhat Java-polut.
  4. Lisää uusi Java-polku PATH:iin.
  5. Muokkaa JAVA_HOME.
  6. 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ä 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.

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 Runtime Environment (JRE), joka sisältää tarvittavat työkalut Java-ohjelmien suorittamiseen, mutta ei uusien ohjelmien kääntämiseen - se sisältää java mutta ei javac.
  • Java Development Kit (JDK), joka sisältää sekä 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".

    Ä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:

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:

  1. Tämä komento poistaa kaiken muun PATHista ja korvaa sen Java-polulla. Tämän komennon suorittamisen jälkeen saatat huomata, että monet muut komennot eivät toimi.
  2. Java-polkusi ei todennäköisesti ole C:\Program Files\Java\jdk1.7.0_09\bin - sinulla on lähes varmasti uudempi versio JDK:sta, jonka polku on eri.
  3. Uusi 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\\bin;%PATH%

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\ (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\

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 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.

Avaa asetusikkuna

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ä:

  • Käynnistä-valikko/taskupalkin hakukenttä » etsi "ympäristömuuttuja"
  • Win + R » control sysdm.cpl,,3.
  • Win + R » SystemPropertiesAdvanced.exe » Ympäristömuuttujat
  • File Explorer » kirjoita osoiteriville Control Panel\System and Security\System » Advanced System Settings (aivan vasemmalla, sivupalkissa) » Ympäristömuuttujat.
  • Työpöytä » napsauta hiiren kakkospainikkeella tätä tietokonetta » Ominaisuudet » Järjestelmän lisäasetukset » Ympäristömuuttujat
  • Käynnistä-valikko » napsauta hiiren kakkospainikkeella Tietokone » Ominaisuudet » Järjestelmän lisäasetukset » Ympäristömuuttujat
  • Ohjauspaneeli (kuvaketila) » Järjestelmä » Järjestelmän lisäasetukset » Ympäristömuuttujat
  • Ohjauspaneeli (luokkatila) » Järjestelmä ja turvallisuus » Järjestelmä » Järjestelmän lisäasetukset » Ympäristömuuttujat
  • Työpöytä » klikkaa hiiren kakkospainikkeella Oma tietokone » Lisäasetukset » Ympäristömuuttujat
  • Ohjauspaneeli » Järjestelmä » Lisäasetukset » Ympäristömuuttujat Minkä tahansa näistä pitäisi viedä sinut oikeaan asetusvalintaikkunaan. Jos käytät Windows 10:tä, Microsoft on siunannut sinua [hienolla uudella käyttöliittymällä] (https://betanews.com/2015/11/23/windows-10-finally-adds-a-new-path-editor/), jolla voit muokata 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.

    Clean 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).

    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 polku PATH: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. 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.

    Sulje ja avaa komentorivi uudelleen

    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.

    Katso myös

  • Mitä PATH ja muut ympäristömuuttujat ovat ja miten voin asettaa tai käyttää niitä?
  • Miten asetan tai muutan PATH-järjestelmämuuttujaa?
  • Polun ja ympäristömuuttujien asettaminen Windowsissa
  • Miten Path-ympäristömuuttujia asetetaan Windows 10:ssä
Kommentit (5)

Kirjoitit set-komennon väärin - jätit pois vinoviivan C::n jälkeen. Sen pitäisi olla:

C:\>set path=C:\Program Files (x86)\Java\jdk1.7.0\bin
Kommentit (4)

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.

Kommentit (0)