javac wordt niet herkend als een interne of externe opdracht, bruikbaar programma of batchbestand [gesloten]

Ik ervaar een fout tijdens het compileren van Java-programma’s.

Ik gebruik Windows (dit is een Windows-specifiek probleem) en ik heb de nieuwste JDK geïnstalleerd.

Ik heb een oplossing geprobeerd met de variabele PATH, maar de fout blijft bestaan.

Console-uitvoer:

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.

Antwoord 1, autoriteit 100%

TL;DR

Voor ervaren lezers:

  1. Zoek het Java-pad; het ziet er als volgt uit: C:\Program Files\Java\jdkxxxx\bin\
  2. Zoek in het startmenu naar “omgevingsvariabele” om het dialoogvenster met opties te openen.
  3. Bekijk PATH. Oude Java-paden verwijderen.
  4. Voeg het nieuwe Java-pad toe aan PATH.
  5. Bewerk JAVA_HOME.
  6. Sluit de console/IDE en open deze opnieuw.

Welkom!

U bent een van de meest beruchte technische problemen tegengekomen waarmee Java-beginners worden geconfronteerd: de 'xyz' is not recognized as an internal or external command...-foutmelding.

Kortom, je hebt Java niet correct geïnstalleerd. Het voltooien van de installatie van Java op Windows vereist enkele handmatige stappen. U moet deze stappen altijd uitvoeren na het installeren van Java, ook na het upgraden van de JDK.

Omgevingsvariabelen en PATH

(Als u dit al begrijpt, kunt u de volgende drie secties overslaan.)

Als je javac HelloWorld.java uitvoert, moet cmd bepalen waar javac.exe zich bevindt. Dit wordt bereikt met PATH, een omgevingsvariabele.

Een omgevingsvariabele is een speciaal sleutel-waardepaar ( bijv. windir=C:\WINDOWS). De meeste werden geleverd met het besturingssysteem en sommige zijn vereist voor een goede werking van het systeem. Een lijst ervan wordt aan elk programma (inclusief cmd) doorgegeven wanneer het wordt gestart. Op Windows zijn er twee typen: gebruikersomgevingsvariabelen en systeemomgevingsvariabelen.

U kunt uw omgevingsvariabelen als volgt zien:

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

De belangrijkste variabele is PATH. Het is een lijst met paden, gescheiden door ;. Wanneer een opdracht wordt ingevoerd in cmd, wordt elke map in de lijst gescand op een overeenkomend uitvoerbaar bestand.

Op mijn computer is PATH:

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

Wanneer u javac HelloWorld.java, cmd, uitvoert nadat u zich realiseert dat javac geen interne opdracht, zoekt in het systeem PATH gevolgd door de gebruiker PATH. Het voert mechanisch elke map in de lijst in en controleert of javac.com, javac.exe, javac.bat, enz. is aanwezig. Wanneer het javac vindt, wordt het uitgevoerd. Als dit niet het geval is, wordt afgedrukt 'javac' is not recognized as an internal or external command, operable program or batch file.

U moet de Java-map met uitvoerbare bestanden toevoegen aan PATH.

JDK versus JRE

(Als u dit al begrijpt, kunt u dit gedeelte overslaan.)

Bij het downloaden van Java krijgt u de keuze tussen:

  • De Java Runtime Environment (JRE), die de benodigde tools bevat om Java uit te voeren programma’s, maar niet om nieuwe te compileren het bevat java maar niet javac.
  • De Java Development Kit (JDK), die zowel java en javac, samen met een groot aantal andere ontwikkeltools. De JDK is een superset van de JRE.

Je moet ervoor zorgen dat je de JDK hebt geïnstalleerd. Als je alleen de JRE hebt geïnstalleerd, kun je javac niet uitvoeren omdat je geen installatie van de Java-compiler op je harde schijf hebt. Controleer uw Windows-programmalijst en zorg ervoor dat de naam van het Java-pakket de woorden “Development Kit” bevat.

Gebruik set

niet

(Als u dit toch niet van plan was, kunt u dit gedeelte overslaan.)

Verschillende andere antwoorden raden aan om een ​​variatie uit te voeren van:

C:\>:: DON'T DO THIS
C:\>set PATH=C:\Program Files\Java\jdk1.7.0_09\bin

Doe dat niet. Er zijn verschillende grote problemen met dat commando:

  1. Dit commando wist al het andere van PATH en vervangt het door het Java-pad. Nadat u deze opdracht hebt uitgevoerd, kunt u merken dat verschillende andere opdrachten niet werken.
  2. Uw Java-pad is waarschijnlijk niet C:\Program Files\Java\jdk1.7.0_09\bin u heeft vrijwel zeker een nieuwere versie van de JDK, die een ander pad zou hebben.
  3. Het nieuwe PATH is alleen van toepassing op de huidige cmd-sessie. Elke keer dat u de opdrachtprompt opent, moet u de opdracht set opnieuw invoeren.

Punten #1 en #2 kunnen worden opgelost met deze iets betere versie:

C:\>:: DON'T DO THIS EITHER
C:\>set PATH=C:\Program Files\Java\<enter the correct Java folder here>\bin;%PATH%

Maar het is in het algemeen gewoon een slecht idee.

Zoek het Java-pad

De juiste manier begint met het vinden waar je Java hebt geïnstalleerd. Dit hangt af van hoe je Java hebt geïnstalleerd.

Exe-installatieprogramma

U hebt Java geïnstalleerd door een installatieprogramma uit te voeren. Het installatieprogramma van Oracle plaatst versies van Java onder C:\Program Files\Java\ (of C:\Program Files (x86)\Java\). Navigeer met Verkenner of Opdrachtprompt naar die map.

Elke submap vertegenwoordigt een versie van Java. Als er maar één is, heb je die gevonden. Kies anders degene die eruitziet als de nieuwere versie. Zorg ervoor dat de mapnaam begint met jdk (in tegenstelling tot jre). Voer de map in.

Voer dan de bin directory daarvan in.

U bent nu in de juiste directory. Kopieer het pad. Als u in Verkenner bent, klikt u op de adresbalk. Als in de opdrachtprompt, kopieer de prompt.

Het resulterende Java-pad moet de vorm hebben van (zonder aanhalingstekens):

C:\Program Files\Java\jdkxxxx\bin\

Zip-bestand

Je hebt een .zip gedownload met daarin de JDK. Pak het uit naar een willekeurige plaats waar het je niet in de weg staat; C:\Java\ is een acceptabele keuze.

Zoek de map bin ergens in de map.

U bent nu in de juiste directory. Kopieer het pad. Dit is het Java-pad.

Vergeet niet om de map nooit te verplaatsen, omdat dat het pad ongeldig zou maken.

Open het instellingenvenster

Dat is het dialoogvenster om PATH te bewerken. Er zijn talloze manieren om naar dat dialoogvenster te gaan, afhankelijk van uw Windows-versie, UI-instellingen en hoe verknoeid uw systeemconfiguratie is.

Probeer enkele van deze:

  • Startmenu/taakbalk zoekvak zoek naar “omgevingsvariabele”
  • Win + R control sysdm.cpl,,3
  • Win + R SystemPropertiesAdvanced.exe Omgevingsvariabelen
  • Bestandsverkenner typ in adresbalk Control Panel\System and Security\System Geavanceerde systeeminstellingen (uiterst links in zijbalk) Omgevingsvariabelen
  • Bureaublad klik met de rechtermuisknop op Deze pc Eigenschappen Geavanceerde systeeminstellingen Omgevingsvariabelen
  • Menu Start klik met de rechtermuisknop op Computer Eigenschappen Geavanceerde systeeminstellingen Omgevingsvariabelen
  • Configuratiescherm (pictogrammodus) Systeem Geavanceerde systeeminstellingen Omgevingsvariabelen
  • Configuratiescherm (categoriemodus) Systeem en beveiliging Systeem Geavanceerde systeeminstellingen Omgevingsvariabelen
  • Bureaublad klik met de rechtermuisknop op Deze computer Geavanceerd Omgevingsvariabelen
  • Configuratiescherm Systeem Geavanceerd Omgevingsvariabelen

Elk van deze zou u naar het juiste instellingenvenster moeten brengen.

Als je Windows 10 gebruikt, heeft Microsoft je gezegend met een fantastische nieuwe gebruikersinterface om PATH te bewerken. Anders zie je PATH in zijn volle glorie met puntkomma’s, geperst in een tekstvak van één regel. Doe je best om de nodige bewerkingen uit te voeren zonder je systeem te beschadigen.

Opschonen PATH

Kijk naar PATH. Je hebt bijna zeker twee PATH variabelen (vanwege gebruiker vs. systeem omgevingsvariabelen). Je moet ze allebei bekijken.

Controleer op andere Java-paden en verwijder deze. Hun bestaan ​​kan allerlei conflicten veroorzaken. (Als je bijvoorbeeld JRE 8 en JDK 11 hebt in PATH, in die volgorde, dan zal javac de Java 11-compiler aanroepen, die versie 55 .class-bestanden, maar java roept de Java 8 JVM aan, die alleen versie 52 ondersteunt, en u zult niet-ondersteunde versiefouten en niet in staat zijn om programma’s te compileren en uit te voeren.) Omzeil deze problemen door ervoor te zorgen dat u slechts één Java-pad hebben in PATH. En terwijl je toch bezig bent, kun je net zo goed oude Java-versies verwijderen, te. En onthoud dat u niet nodig zowel een JDK als een JRE.

Als je C:\ProgramData\Oracle\Java\javapath hebt, verwijder die dan ook. Oracle wilde het probleem oplossen van Java-paden die na upgrades worden verbroken door een symbolische link te maken die altijd naar naar de nieuwste Java-installatie. Helaas verwijst het vaak naar de verkeerde locatie of werkt gewoon niet. Het is beter om dit item te verwijderen en het Java-pad handmatig te beheren.

Dit is ook een goede gelegenheid om algemene huishoudelijke taken uit te voeren op PATH. Als u paden heeft met betrekking tot software die niet meer op uw pc is geïnstalleerd, kunt u deze verwijderen. Je kunt ook de volgorde van de paden in willekeurige volgorde wijzigen (als je dat soort dingen belangrijk vindt).

Toevoegen aan PATH

Neem nu het Java-pad dat je drie stappen geleden hebt gevonden en plaats het in het systeem PATH.

Het zou niet moeten uitmaken waar in de lijst je nieuwe pad naartoe gaat; het aan het einde plaatsen is een goede keuze.

Als u de gebruikersinterface van vóór Windows 10 gebruikt, zorg er dan voor dat u de puntkomma’s correct hebt geplaatst. Er moet er precies één zijn die elk pad in de lijst scheidt.

Er valt hier eigenlijk niet veel anders te zeggen. Voeg eenvoudig het pad toe aan PATH en klik op OK.

Stel JAVA_HOME

in

Terwijl je toch bezig bent, kun je net zo goed JAVA_HOME instellen. Dit is een andere omgevingsvariabele die ook het Java-pad moet bevatten. Veel Java- en niet-Java-programma’s, waaronder de populaire Java-buildsystemen Maven en Gradle, geeft fouten als het niet correct is ingesteld.

Als JAVA_HOME niet bestaat, maak deze dan aan als een nieuwe systeemomgevingsvariabele. Stel het in op het pad van de Java-directory zonder de bin/-directory, d.w.z. C:\Program Files\Java\jdkxxxx\.

Vergeet niet om JAVA_HOME ook te bewerken na het upgraden van Java.

Opdrachtprompt sluiten en opnieuw openen

Hoewel je PATH hebt gewijzigd, zien alle actieve programma’s, inclusief cmd, alleen het oude PATH. Dit komt omdat de lijst met alle omgevingsvariabelen pas naar een programma wordt gekopieerd wanneer het wordt uitgevoerd; daarna raadpleegt het alleen de gecachte kopie.

Er is geen goede manier om vernieuw de omgevingsvariabelen van cmd, dus sluit gewoon de opdrachtprompt en open deze opnieuw. Als u een IDE gebruikt, sluit deze dan en open deze ook opnieuw.

Zie ook


Antwoord 2, autoriteit 16%

probeer dit eens..
Ik had het ook, maar nu is het opgelost in XP..

C:\ YourFolder >set path=C:\Program Files\Java\jdk1.7.0_09\bin;
C:\ YourFolder >javac YourCode.java

Antwoord 3, autoriteit 10%

Je hebt de opdracht set verkeerd getypt je hebt de backslash na C: gemist. Het zou moeten zijn:

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

Antwoord 4, autoriteit 4%

Voer het volgende uit vanaf de opdrachtprompt:

set PATH="C:\Program Files\Java\jdk1.7.0_09\bin"

of

set PATH="C:\Program Files\Java\jdk1.7.0_09\bin"

Ik heb dit geprobeerd en het werkt goed.


Antwoord 5

Als het java-commando werkt en problemen met javac krijgen. controleer dan eerst of jdk’s bin directory javac.exe bestand aanwezig is of niet.
Als het javac.exe-bestand bestaat, stel dan JAVA_HOME in als systeemvariabele.


Antwoord 6

Controleer uw omgevingsvariabelen.

In mijn geval had ik JAVA_HOME ingesteld in de Systeemvariabelen en in mijn Gebruikersaccount variabelen en de laatste was ingesteld op een verkeerde versie van Java . Ik had hetzelfde probleem met de variabele Path.

Na het verwijderen van JAVA_HOME uit mijn gebruikersaccount variabelen en het verwijderen van het verkeerde pad uit de padvariabele werkte het correct.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

7 − 2 =

Other episodes