TL; DR
Per lettori esperti:
- Trova il percorso Java; sembra così:
C:\Program Files\Java\jdkxxxx\bin\
- Cerca nel menu Start "variabile d'ambiente" per aprire la finestra di dialogo delle opzioni.
- Esaminate
PATH
. Rimuovi i vecchi percorsi Java.
- Aggiungi il nuovo percorso Java a
PATH
.
- Modifica
JAVA_HOME
.
- Chiudi e riapri la console / IDE.
Benvenuto!
Hai riscontrato uno dei problemi tecnici più noti per i principianti di Java: il 'xyz' is not recognized as an internal or external command...
messaggio di errore.
In breve, Java non è stato installato correttamente . La finalizzazione dell'installazione di Java su Windows richiede alcuni passaggi manuali. È necessario eseguire sempre questi passaggi dopo l'installazione di Java, anche dopo aver aggiornato JDK.
Variabili d'ambiente e PATH
(Se lo capisci già, sentiti libero di saltare le tre sezioni successive.)
Quando corri javac HelloWorld.java
, cmd deve determinare dove javac.exe
si trova. Questo si ottiene con PATH
una variabile d'ambiente.
Una variabile d'ambiente è una coppia chiave-valore speciale (ad es windir=C:\WINDOWS
.). La maggior parte veniva fornita con il sistema operativo e alcuni sono necessari per il corretto funzionamento del sistema. Un elenco di questi viene passato a tutti i programmi (incluso cmd) all'avvio. Su Windows , ci sono due tipi : variabili di ambiente utente e variabili di ambiente di sistema .
Puoi vedere le variabili di ambiente in questo modo:
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
...
La variabile più importante è PATH
. È un elenco di percorsi, separati da ;
. Quando un comando viene immesso in cmd, ogni directory nell'elenco verrà scansionata per un eseguibile corrispondente.
Sul mio computer, 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
Quando esegui javac HelloWorld.java
, cmd, dopo aver realizzato che javac
non è un comando interno , cerca il sistema PATH
seguito dall'utentePATH
. Si entra meccanicamente ogni directory nella lista, e controlla se javac.com
, javac.exe
, javac.bat
, ecc è presente. Quando trova javac
, lo esegue. Quando non lo fa, stampa'javac' is not recognized as an internal or external command, operable program or batch file.
È necessario aggiungere la directory degli eseguibili Java a PATH
.
JDK vs. JRE
(Se lo capisci già, sentiti libero di saltare questa sezione.)
Durante il download di Java, viene offerta una scelta tra:
- Il Java Runtime Environment (JRE), che comprende gli strumenti necessari per eseguire programmi Java, ma non per compilare nuovi - contiene
java
, ma non javac
.
- Il Java Development Kit (JDK), che contiene sia
java
e javac
, insieme a una serie di altri strumenti di sviluppo. Il JDK è un superset del JRE.
È necessario assicurarsi di aver installato JDK . Se è stato installato solo JRE, non è possibile eseguire javac
perché non si dispone di un'installazione del compilatore Java sul disco rigido. Controlla l'elenco dei programmi di Windows e assicurati che il nome del pacchetto Java contenga le parole "Development Kit" in esso.
Non usare set
(Se non avevi intenzione di farlo, non esitare a saltare questa sezione.)
Diverse altre risposte raccomandano di eseguire alcune variazioni di:
C:\>:: DON'T DO THIS
C:\>set PATH=C:\Program Files\Java\jdk1.7.0_09\bin
Non farlo. Esistono diversi problemi importanti con quel comando:
- Questo comando cancella tutto il resto da
PATH
e lo sostituisce con il percorso di Java. Dopo aver eseguito questo comando, è possibile che vari altri comandi non funzionino.
- Probabilmente il tuo percorso Java non lo è
C:\Program Files\Java\jdk1.7.0_09\bin
: hai quasi sicuramente una versione più recente di JDK, che avrebbe un percorso diverso.
- Il nuovo
PATH
si applica solo alla sessione cmd corrente. Dovrai reinserire il set
comando ogni volta che apri il Prompt dei comandi.
I punti 1 e 2 possono essere risolti con questa versione leggermente migliore:
C:\>:: DON'T DO THIS EITHER
C:\>set PATH=C:\Program Files\Java\<enter the correct Java folder here>\bin;%PATH%
Ma è solo una cattiva idea in generale.
Trova il percorso Java
Il modo giusto inizia con la ricerca di dove hai installato Java. Questo dipende da come hai installato Java.
Programma di installazione exe
Java è stato installato eseguendo un programma di installazione. Il programma di installazione di Oracle posiziona le versioni di Java sotto C:\Program Files\Java\
(o C:\Program Files (x86)\Java\
). Con Esplora file o il prompt dei comandi, accedere a quella directory.
Ogni sottocartella rappresenta una versione di Java. Se ce n'è solo uno, l'hai trovato. Altrimenti, scegli quello che assomiglia alla versione più recente. Assicurarsi che il nome della cartella inizi con jdk
(anziché jre
). Inserisci la directory
Quindi inserisci la bin
directory di quello.
Ora sei nella directory corretta. Copia il percorso. Se in Esplora file, fai clic sulla barra degli indirizzi. Se nel Prompt dei comandi, copiare il prompt.
Il percorso Java risultante dovrebbe essere nella forma di (senza virgolette):
C:\Program Files\Java\jdkxxxx\bin\
File zip
Hai scaricato un .zip contenente il JDK. Estrailo in un posto casuale dove non ti ostacoli; C:\Java\
è una scelta accettabile.
Quindi individuare la bin
cartella da qualche parte al suo interno.
Ora sei nella directory corretta. Copia il suo percorso. Questo è il percorso Java.
Ricorda di non spostare mai la cartella, poiché ciò invaliderebbe il percorso.
Apri la finestra di dialogo delle impostazioni
Questa è la finestra di dialogo da modificare PATH
. Esistono numerosi modi per accedere a quella finestra di dialogo, a seconda della versione di Windows, delle impostazioni dell'interfaccia utente e della confusione della configurazione del sistema.
Prova alcuni di questi:
- Avvia la casella di ricerca Menu / barra delle applicazioni »cerca" variabile d'ambiente "
- Win + R »
control sysdm.cpl,,3
- Win + R »
SystemPropertiesAdvanced.exe
» Variabili d'ambiente
- Esplora file »digitare nella barra degli indirizzi
Control Panel\System and Security\System
» Impostazioni di sistema avanzate (all'estrema sinistra, nella barra laterale) »Variabili d'ambiente
- Desktop »fai clic con il pulsante destro del mouse su questo PC» Proprietà »Impostazioni di sistema avanzate» Variabili d'ambiente
- Menu Start »tasto destro del mouse su Computer» Proprietà »Impostazioni di sistema avanzate» Variabili d'ambiente
- Pannello di controllo (modalità icona) »Sistema» Impostazioni di sistema avanzate »Variabili d'ambiente
- Pannello di controllo (modalità categoria) »Sistema e sicurezza» Sistema »Impostazioni di sistema avanzate» Variabili d'ambiente
- Desktop »tasto destro del mouse su Risorse del computer» Avanzate »Variabili d'ambiente
- Pannello di controllo »Sistema» Avanzate »Variabili d'ambiente
Ognuno di questi dovrebbe portarti alla finestra di dialogo delle impostazioni corretta.
Se sei su Windows 10, Microsoft ti ha benedetto con una nuova interfaccia utente da modificare PATH
. Altrimenti, vedrai PATH
nella sua gloria piena di punti e virgola, racchiusa in una casella di testo a riga singola. Fai del tuo meglio per apportare le modifiche necessarie senza rompere il sistema.
Pulito PATH
Guarda PATH
. Hai quasi sicuramente due PATH
variabili (a causa delle variabili utente vs. ambiente di sistema). Devi guardarli entrambi.
Controlla altri percorsi Java e rimuovili. La loro esistenza può causare ogni sorta di conflitto. (Ad esempio, se si dispone di JRE 8 e JDK 11 in PATH
, in questo ordine, javac
verrà richiamato il compilatore Java 11, che creerà i .class
file della versione 55 , ma java
richiamerà JVM Java 8, che supporta solo fino alla versione 52, e riscontrerai errori di versione non supportati e non sarai in grado di compilare ed eseguire alcun programma.) Evita questi problemi assicurandoti di avere solo un percorso Java PATH
. E mentre ci sei, puoi anche disinstallare anche le vecchie versioni di Java . E ricorda che non devi avere sia un JDK che un JRE.
Se lo hai C:\ProgramData\Oracle\Java\javapath
, rimuovi anche quello . Oracle intendeva risolvere il problema della rottura dei percorsi Java dopo gli aggiornamenti creando un collegamento simbolico che puntava sempre all'ultima installazione Java. Sfortunatamente, spesso finisce per indicare la posizione sbagliata o semplicemente non funziona . È meglio rimuovere questa voce e gestire manualmente il percorso Java.
Ora è anche una buona opportunità per eseguire le pulizie generali PATH
. Se sul PC sono presenti percorsi relativi al software non più installati, è possibile rimuoverli. Puoi anche mescolare l'ordine dei percorsi intorno (se ti preoccupi di cose del genere).
Aggiungere a PATH
Ora prendi il percorso Java che hai trovato tre passaggi fa e inseriscilo nel sistema PATH
.
Non dovrebbe importare dove si trova il tuo nuovo percorso nell'elenco; posizionarlo alla fine è una buona scelta.
Se stai utilizzando l'interfaccia utente precedente a Windows 10, assicurati di aver inserito correttamente i punti e virgola. Dovrebbe esserci esattamente uno che separa ogni percorso nell'elenco.
Non c'è davvero molto altro da dire qui. Aggiungi semplicemente il percorso PATH
e fai clic su OK.
Impostato JAVA_HOME
Mentre ci sei, puoi anche impostare JAVA_HOME
. Questa è un'altra variabile d'ambiente che dovrebbe contenere anche il percorso Java. Molti programmi Java e non Java, inclusi i popolari sistemi di compilazione Java Maven e Gradle , generano errori se non impostati correttamente.
Se JAVA_HOME
non esiste, crearlo come nuova variabile di ambiente di sistema. Impostalo sul percorso della directory Java senza la bin/
directory, ad es C:\Program Files\Java\jdkxxxx\
.
Ricorda di modificare anche JAVA_HOME
dopo aver aggiornato Java.
Chiudi e riapri il prompt dei comandi
Sebbene tu abbia modificato PATH
, tutti i programmi in esecuzione, incluso cmd, vedono solo il vecchio PATH
. Questo perché l'elenco di tutte le variabili di ambiente viene copiato in un programma solo quando inizia l'esecuzione; in seguito consulta solo la copia cache.
Non esiste un buon modo per aggiornare le variabili di ambiente di cmd , quindi è sufficiente chiudere il prompt dei comandi e aprirlo di nuovo. Se si utilizza un IDE, chiuderlo e riaprirlo.
Guarda anche