- 1 1. Cosa Imparerai in Questo Articolo (In sintesi)
- 2 2. Inizia Qui: Elenco dei Comandi per Controllare la Versione di Java (Copia & Incolla)
- 2.1 2.1 Controlla la Versione di Java Usata a Runtime
- 2.2 2.2 Controlla la Versione dell’Ambiente di Sviluppo Java (JDK)
- 2.3 2.3 La differenza tra java -version e javac -version (Confusione comune per i principianti)
- 2.4 2.4 Verifica usando uno strumento JDK (Opzionale)
- 2.5 2.5 Ordine consigliato per la verifica (per principianti)
- 3 3. Come leggere java -version (Esempio di output e come interpretarlo)
- 4 4. Come leggere javac -version (Confermare se il JDK è installato)
- 5 5. Come verificare la versione di Java su Windows
- 5.1 5.1 Controllo tramite Prompt dei comandi / PowerShell (Base)
- 5.2 5.2 Un comando chiave specifico per Windows: where java
- 5.3 5.3 Perché viene utilizzata una vecchia versione di Java anche dopo l’installazione
- 5.4 5.4 Come verificare JAVA_HOME (Windows)
- 5.5 5.5 Checklist sicura per Windows
- 5.6 5.6 Verifica tramite l’interfaccia grafica (schermata delle variabili d’ambiente) può attendere
- 6 6. Come verificare la versione di Java su macOS
- 7 7. Come verificare la versione di Java su Linux
- 8 8. Perché la versione di Java visualizzata differisce (Cause e soluzioni)
- 9 9. Una checklist per andare oltre il semplice “controllo”
- 10 10. FAQ (Domande frequenti)
1. Cosa Imparerai in Questo Articolo (In sintesi)
Su questa pagina organizzeremo il modo più veloce per raggiungere il tuo obiettivo di “controllare la versione di Java dalla riga di comando.”
Per condividere subito la conclusione, i comandi che userai più spesso sono questi due:
- La versione di Java che effettivamente viene eseguita →
java -version - La versione del JDK (compilatore) per lo sviluppo →
javac -version
Tuttavia, negli ambienti reali è molto comune scoprire che “la versione che ti aspettavi non è quella che compare.”
Questo articolo non si limita a elencare i comandi—spiega anche perché si verifica il mismatch e come risolverlo.
1.1 Cosa Sarai in Grado di Fare Dopo la Lettura
Al termine, sarai in grado di:
- Controllare immediatamente la tua versione di Java wp:list /wp:list
- Usare con sicurezza
java -versionejavac -versionper lo scopo corretto
- Usare con sicurezza
- Capire come verificare su Windows / macOS / Linux wp:list /wp:list
- Verificare Java tenendo conto delle differenze tipiche dei vari OS
- Identificare quale Java viene usato anche quando sono installate più versioni wp:list /wp:list
- Risolvere “l’ho installato, ma compare ancora una versione più vecchia” da solo
- Comprendere le cause tipiche e le correzioni quando la versione mostrata non è quella attesa wp:list /wp:list
- Imparare le basi di PATH, JAVA_HOME e le impostazioni di cambio versione
1.2 Pubblico di Destinazione (Benvenuti Principianti)
- Hai bisogno di usare Java e vuoi sapere quale Java è installato sul tuo PC prima di tutto
- Ti è stato detto “necessario Java 17” o “solo Java 8”, e devi controllare la tua versione corrente
- Hai eseguito un comando e hai ottenuto una versione diversa da quella che ti aspettavi, e sei bloccato
javafunziona majavacno, e non comprendi appieno le differenze tra JRE e JDK
1.3 Un Punto Chiave da Sapere Fin da Subito (Molto Importante)
La maggior parte della confusione nel controllare la versione di Java si riduce a questo unico punto:
- “Java installato sulla macchina” non è la stessa cosa di “Java che effettivamente viene eseguito.”
Quando esistono più installazioni di Java, quella che viene eseguita è quella trovata nella posizione a più alta priorità al momento dell’esecuzione.
Ecco perché il risultato di java -version potrebbe non essere “l’ultima versione che hai appena installato.”
Tenendo presente questo mismatch, l’articolo spiega, in ordine:
- Cosa eseguire per primo (il percorso più breve)
- Cosa controllare dopo per identificare la causa (passi di investigazione)
- Come risolvere (passi di risoluzione)
passo dopo passo.
2. Inizia Qui: Elenco dei Comandi per Controllare la Versione di Java (Copia & Incolla)
Non servono molti comandi per verificare la tua versione di Java.
Se ricorderai solo questa sezione, risolverai circa il 90 % dei casi.
2.1 Controlla la Versione di Java Usata a Runtime
java -version
Questo comando mostra la versione di Java che effettivamente viene eseguita su questo PC in questo momento.
È il modo più semplice—e più importante—per confermare il tuo ambiente Java.
Cosa Include Tipicamente l’Output (Esempio)
- Il numero di versione di Java (es. 17 / 21 / 1.8, ecc.)
- L’implementazione (OpenJDK / Oracle JDK, ecc.)
- Dettagli dell’ambiente di runtime come 64‑bit / Server VM
Il punto chiave è questo: mirare al java che ha la priorità più alta nel tuo PATH.
Non riguarda “dove hai installato Java”, ma “quale Java viene invocato.” Tienilo a mente.
2.2 Controlla la Versione dell’Ambiente di Sviluppo Java (JDK)
javac -version
Questo comando mostra la versione del compilatore Java (javac).
Cosa Ti Dice
- Se il JDK è installato correttamente
- Se puoi usare Java non solo per eseguire applicazioni, ma anche per sviluppo/compilazione
Se questo comando restituisce qualcosa del tipo:
- “command not found”
- “
javacnon è riconosciuto come comando interno o esterno”
allora è molto probabile che il JDK non sia installato o che il tuo PATH non sia impostato correttamente.
2.3 La differenza tra java -version e javac -version (Confusione comune per i principianti)
| Command | What It Checks | Main Use |
|---|---|---|
java -version | Java at runtime | Running apps / verifying runtime behavior |
javac -version | Compiler (JDK) | Development / builds |
Un fraintendimento comune è:
- Se
java -versionfunziona, puoi sviluppare codice Java. Questo non è corretto. - Esegui solo →
java - Sviluppa (compila) →
javac
Questi due hanno ruoli diversi, quindi verificare entrambi è l’approccio standard.
2.4 Verifica usando uno strumento JDK (Opzionale)
A seconda del tuo ambiente, puoi anche verificare la versione del JDK usando il comando seguente:
jshell --version
jshellè uno strumento incluso di default in JDK 9 e versioni successive- Se funziona, è un buon segno che il JDK è installato
Detto ciò, finché comprendi java -version e javac -version, di solito è sufficiente.
2.5 Ordine consigliato per la verifica (per principianti)
Se sei nuovo a questo, verificare nell’ordine seguente riduce la confusione:
java -version→ Verifica la versione Java usata a runtimejavac -version→ Conferma che il JDK di sviluppo è disponibile- Se i risultati non sono quelli attesi, consulta la sezione successiva per verifiche specifiche per OS
3. Come leggere java -version (Esempio di output e come interpretarlo)
In questa sezione, analizzeremo cosa appare quando esegui java -version, passo dopo passo così i principianti non si perderanno. Questo per evitare la situazione comune di “Non so cosa devo guardare.”
3.1 Il ruolo base di java -version
java -version
Ciò che questo comando ti dice è la versione Java che verrà eseguita subito. Non mostra un elenco di versioni Java installate—mostra quella effettivamente in uso.
Ecco perché questo risultato diventa la base per cose come:
- Se soddisfi la versione Java richiesta da un’app o uno strumento
- Se gli ambienti di produzione/test stanno eseguendo la versione Java prevista
- Se una versione Java più vecchia viene usata inaspettatamente
3.2 Esempio tipico di output (Illustrazione)
La formulazione esatta varia a seconda dell’ambiente, ma generalmente vedrai qualcosa di simile:
java version "17.0.8"
Java(TM) SE Runtime Environment (build 17.0.8+9)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.8+9, mixed mode)
All’interno di questo output, la parte più importante è la prima riga.
3.3 Cosa controllare per primo (Questo è tutto ciò di cui hai bisogno)
① Version Number
java version "17.0.8"
17→ Serie Java 171.8.x→ Java 821.x→ Java 21
In molti ambienti di lavoro, le versioni LTS (Long-Term Support) come 8 / 11 / 17 / 21 sono comunemente usate. Prima, verifica se è la versione principale richiesta dal tuo progetto.
② Distribuzione Java (Oracle / OpenJDK, ecc.)
Java(TM) SE Runtime Environment
o
OpenJDK Runtime Environment
Nella maggior parte dei casi, non è necessario essere troppo rigidi su questo per una verifica di base. Tuttavia, alcune aziende/progetti possono richiedere esplicitamente “Oracle JDK” o “OpenJDK”, quindi può essere importante a seconda del tuo ambiente.
③ “64-Bit” / “Server VM”
64-Bit Server VM
- Nella maggior parte degli ambienti moderni, 64-Bit è normale
- A meno che tu non abbia un motivo speciale, un rapido controllo qui è sufficiente
3.4 Perché ottieni “Una versione Java diversa da quella attesa”
Questo è il punto che più confonde i principianti.
Un fraintendimento comune
- “Ho installato l’ultima versione di Java.”
- “Quindi
java -versiondovrebbe mostrare l’ultima versione.”
In realtà, questo non è garantito.
Il motivo è semplice:
java -versionesegue il primojavache trova con la massima priorità nel PATH
Ecco perché.
In altre parole, se:
- Una versione Java più vecchia rimane più in alto nel PATH
- Più installazioni JDK/JRE sono mescolate insieme
allora potrebbe essere eseguita una versione Java diversa da quella che hai installato.
3.5 java -version controlla il “Risultato”, non la “Posizione”
Come modo importante di pensare:
- ❌ Dove è installato Java
- ⭕ Quale Java è effettivamente in esecuzione
Questo è ciò per cui serve java -version.
Per prima cosa, decidi semplicemente se il risultato visualizzato è corretto.
Se non lo è, usa le sezioni seguenti per identificare la causa e correggerla—questo è il flusso di lavoro più sicuro.
4. Come leggere javac -version (Confermare se il JDK è installato)
Qui spiegheremo il ruolo di javac -version e come interpretarlo.
Capire rapidamente questo comando risolve un problema comune: “Java funziona, ma non riesco a sviluppare/compilare.”
4.1 Cos’è javac? (Per principianti)
javac è l’abbreviazione di Java Compiler.
java→ esegue un programma già compilatojavac→ compila il codice sorgente (.java)
Quindi i ruoli sono:
- Se vuoi solo eseguire Java → basta
java - Se vuoi sviluppare/compilare Java → è necessario
javac
Questa è la divisione di base delle responsabilità.
4.2 Cosa si apprende da javac -version
javac -version
Questo comando mostra la versione del compilatore Java attualmente in uso.
Output di esempio (Illustrazione)
javac 17.0.8
Il numero mostrato può essere interpretato come:
- La versione del JDK stessa
- La versione di Java di base usata per la compilazione in pratica
Questa comprensione è sufficiente nella maggior parte delle situazioni reali.
4.3 Note importanti quando non corrisponde a java -version
Questo tipo di discrepanza si verifica frequentemente nel lavoro reale:
java -version→ 17javac -version→ 11
In tal caso, hai una configurazione non allineata:
- Runtime: Java 17
- Sviluppo: Java 11
Problemi che questa discrepanza può causare
- Non puoi usare le nuove funzionalità del linguaggio
- La compilazione riesce, ma si verificano errori a runtime
- Il comportamento differisce tra CI e ambienti locali
Quindi, come politica di base, è più sicuro allineare entrambe le versioni.
4.4 Quando javac non è trovato (Errori comuni)
Potresti vedere messaggi come i seguenti:
- “
javacnon è riconosciuto come comando interno o esterno” - “command not found: javac”
In questo caso, le cause probabili sono quasi sempre una di queste due:
Causa 1: Il JDK non è installato
- È installato solo il JRE (runtime)
- Gli strumenti di sviluppo non sono inclusi
Causa 2: PATH non impostato
- Il JDK è installato, ma la directory
binnon è inclusa nel PATH
Puoi distinguere in modo affidabile tra queste situazioni nelle sezioni di conferma specifiche per il sistema operativo.
4.5 javac -version è un segnale di “Posso sviluppare?”
Se sei un principiante, ricordarlo in questo modo eviterà confusione:
java -version→ Posso eseguire Java?javac -version→ Posso sviluppare/compilare Java?
Se entrambi i comandi mostrano le versioni attese,
il tuo ambiente Java è in uno stato in cui la configurazione minima necessaria è completa.
5. Come verificare la versione di Java su Windows
Questa sezione spiega come controllare la versione di Java su Windows, includendo i punti che comunemente causano problemi nell’uso reale.
Poiché Windows è un OS in cui spesso coesistono più installazioni di Java, l’ordine dei controlli è particolarmente importante.
5.1 Controllo tramite Prompt dei comandi / PowerShell (Base)
Inizia con il metodo più elementare.
- Apri Prompt dei comandi o PowerShell
- Esegui il comando seguente
java -version
Se prevedi di sviluppare con Java, controlla anche questo:
javac -version
A questo punto:
- Se entrambe le versioni sono quelle attese → Nessun problema
- Se la versione non è quella attesa → Identifica la causa nei passaggi successivi
Questo è il modo in cui dovresti valutare il risultato.
5.2 Un comando chiave specifico per Windows: where java
Su Windows è estremamente importante identificare quale java.exe viene effettivamente usato.
where java
Output di esempio (Illustrazione)
C:\Program Files\Java\jdk-17\bin\java.exe
C:\Program Files\Common Files\Oracle\Java\javapath\java.exe
Se vengono mostrati più righe, quella elencata in cima ha la priorità più alta ed è quella che realmente viene eseguita.
5.3 Perché viene utilizzata una vecchia versione di Java anche dopo l’installazione
Le cause comuni su Windows includono:
- Una vecchia installazione di Java è ancora presente
javapathappare prima nel PATH- JAVA_HOME e PATH non corrispondono
In particolare, se la seguente directory è inclusa nel PATH:
C:\Program Files\Common Files\Oracle\Java\javapath
spesso provoca l’invocazione di una versione di Java non intenzionale.

5.4 Come verificare JAVA_HOME (Windows)
Successivamente, verifica JAVA_HOME.
echo %JAVA_HOME%
- Se non viene mostrato nulla → JAVA_HOME non è impostato
- Se viene mostrato un percorso inaspettato → Potrebbe puntare a una vecchia versione di Java
Esempio di una configurazione corretta
C:\Program Files\Java\jdk-17
Nota che dovrebbe puntare alla directory radice del JDK, non alla directory bin.
5.5 Checklist sicura per Windows
Per i principianti, verificare in questo ordine aiuta a evitare confusione:
java -versionjavac -versionwhere javaecho %JAVA_HOME%
Se tutti e quattro i controlli risultano corretti,
puoi concludere che il tuo ambiente Java su Windows è configurato correttamente.
5.6 Verifica tramite l’interfaccia grafica (schermata delle variabili d’ambiente) può attendere
Windows fornisce anche una schermata GUI per visualizzare e modificare le variabili d’ambiente, ma:
- Quale Java viene utilizzato
- Perché c’è una discrepanza
vengono valutati molto più accuratamente usando l’output dei comandi.
Usa l’interfaccia grafica quando devi correggere le impostazioni,
ma verifica sempre con i comandi — è l’approccio pratico.
6. Come verificare la versione di Java su macOS
Questa sezione spiega come verificare la versione di Java su macOS.
A differenza di Windows, macOS ha un meccanismo a livello di sistema per gestire i JDK, quindi conoscere i comandi dedicati aiuta a evitare confusione.
6.1 Verifica i comandi di base nel Terminale
Per prima cosa, inizia con gli stessi comandi di base usati ovunque.
- Apri Terminale
- Esegui il seguente comando
java -version
Se prevedi di sviluppare con Java, verifica anche:
javac -version
Se questi due risultati sono come previsto,
l’ambiente Java effettivamente utilizzato su macOS è corretto.
6.2 Nota: macOS gestisce automaticamente JAVA_HOME
Su macOS è comune non impostare manualmente JAVA_HOME,
ma recuperarlo dinamicamente usando un comando di sistema.
Il comando rappresentativo è:
/usr/libexec/java_home
Esempio di output (illustrazione)
/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
Questo percorso è la directory home dell’attuale JDK predefinito.
6.3 Elenca i JDK installati
Se sono installati più JDK, il comando seguente è estremamente utile:
/usr/libexec/java_home -V
Eseguendo questo comando si visualizza:
- Versioni JDK installate
- Fornitori (Oracle / basati su OpenJDK, ecc.)
- Architetture supportate
Su macOS, questo è il modo più sicuro per confermare innanzitutto quali JDK sono effettivamente installati.
6.4 Quando java -version e java_home non corrispondono
Potresti incontrare una situazione come questa:
/usr/libexec/java_home→ Java 17java -version→ Java 11
In tali casi, le cause probabili sono:
JAVA_HOMEè fissato nei file di configurazione della shell (.zshrc/.bashrc)- Un Java diverso appare prima nel PATH
- Un Java installato tramite Homebrew ha la priorità
Su macOS, le impostazioni a livello utente hanno la precedenza,
quindi i file di configurazione della shell hanno una forte influenza.
6.5 Checklist sicura per macOS
Su macOS, verificare in questo ordine mantiene le cose organizzate:
java -versionjavac -version/usr/libexec/java_home/usr/libexec/java_home -V
Con questi quattro controlli, puoi comprendere accuratamente:
- Il Java attualmente in uso
- L’elenco delle versioni Java installate
- Il JDK predefinito
senza ambiguità.
6.6 Pensa in termini di “switching” su macOS
Su macOS è comune che:
- Progetti diversi richiedono versioni Java diverse
- Si passa da un JDK all’altro
Pertanto:
- Non presumere che ci sia un solo Java
- Conferma sempre quale Java è attualmente in uso
Mantenere questo approccio rende molto più facile evitare problemi.
7. Come verificare la versione di Java su Linux
Questa sezione spiega come verificare la versione di Java negli ambienti Linux, soprattutto per l’uso su server.
Sebbene i metodi di gestione differiscano a seconda della distribuzione, i concetti di base sono gli stessi.
7.1 Inizia con i comandi di base
Anche su Linux, inizia con i comandi comuni:
java -version
Se è necessario lo sviluppo o le compilazioni, controlla anche:
javac -version
Con questi due comandi, puoi determinare se:
- Il Java usato a runtime
- Il JDK usato per la compilazione
corrispondono alle tue aspettative.
7.2 Usa which java per trovare il binario reale
Su Linux è importante sapere quale eseguibile viene effettivamente invocato.
which java
Output di esempio
/usr/bin/java
Questo percorso è il binario Java reale usato da java -version.
Se ti servono più dettagli, esegui:
ls -l $(which java)
Questo ti permette di tracciare il link simbolico verso il suo vero obiettivo.
7.3 Gestire più versioni di Java su Debian / Ubuntu (update-alternatives)
Sui server è molto comune avere più versioni di Java installate.
Sui sistemi basati su Debian/Ubuntu, queste sono spesso gestite con update-alternatives.
Elenca le alternative Java
update-alternatives --list java
Controlla la selezione corrente
update-alternatives --display java
Il percorso mostrato qui è il Java selezionato a livello di sistema.
7.4 Quando java -version e le alternative non corrispondono
Occasionalmente, potresti vedere una discrepanza come:
update-alternatives→ Java 17java -version→ Java 11
Le possibili cause includono:
- Un Java diverso appare nel PATH dell’utente
- Un Java installato manualmente esiste in
/usr/local/bin, ecc. - Il PATH differisce tra l’esecuzione normale e
sudo
Su Linux, entrambi:
- Impostazioni a livello di sistema
- Ambiente a livello utente
possono influenzare quale Java viene eseguito.
7.5 Checklist sicura per Linux
Su Linux, verificare in quest’ordine mantiene le cose chiare:
java -versionjavac -versionwhich javaupdate-alternatives --display java(se applicabile)
Questo ti fornisce un quadro completo di:
- Il Java attualmente in esecuzione
- Il file eseguibile reale
- La configurazione di sistema
a colpo d’occhio.
8. Perché la versione di Java visualizzata differisce (Cause e soluzioni)
La maggior parte dei problemi di versione di Java non è causata dai comandi stessi, ma dalla configurazione dell’ambiente.
Qui riassumiamo le cause che si applicano a tutti i sistemi operativi.
8.1 Causa 1: La priorità del PATH non è quella che ti aspetti
Questa è la causa più comune.
- Una vecchia directory
bindi Java appare prima nel PATH - Hai installato un nuovo Java ma non hai aggiornato il PATH
Come risolvere
- Identifica quale Java è effettivamente in esecuzione
- Rimuovi le voci PATH non necessarie o correggi il loro ordine
Semplicemente “aggiungere” un nuovo percorso spesso non è sufficiente.
8.2 Causa 2: JAVA_HOME non corrisponde al Java in esecuzione
- JAVA_HOME → Java 11
- Java in esecuzione → Java 17
Questa situazione è anche molto comune.
Come risolvere
- Imposta JAVA_HOME sulla directory radice del JDK
- Assicurati che il PATH utilizzi
$JAVA_HOME/bin
Considera JAVA_HOME come una “riferimento”, e PATH come la “priorità di esecuzione”.
8.3 Causa 3: java e javac usano versioni diverse
Questo è un caso classico di versioni miste di JRE e JDK.
- Il runtime funziona
- Lo sviluppo o le compilazioni falliscono
Come risolvere
- Scegli un JDK come standard
- Allinea
javaejavacsotto lo stesso JDK
8.4 Causa 4: IDE o strumenti di build usano un JDK diverso
- Tutto sembra a posto nel terminale
- Gli errori si verificano nell’IDE o nel CI
In questi casi, la causa è spesso impostazioni JDK specifiche dell’IDE.
Come risolvere
- Controlla esplicitamente il JDK usato nelle impostazioni dell’IDE
- Non fare affidamento solo sul “rilevamento automatico”
9. Una checklist per andare oltre il semplice “controllo”
Infine, organizziamo ciò che dovresti fare dopo aver controllato la tua versione di Java.
9.1 Se il tuo obiettivo è solo eseguire Java
java -versionsoddisfa i requisiti?- L’applicazione si avvia correttamente?
9.2 Se il tuo obiettivo è lo sviluppo o le build
javac -versionsoddisfa i requisiti?javaejavacmostrano la stessa versione?- JAVA_HOME e PATH sono allineati?
9.3 Se usi più versioni di Java
- Conferma sempre quale Java è attualmente in uso
- Comprendi la gestione specifica del sistema operativo (macOS / Linux)
10. FAQ (Domande frequenti)
10.1 Qual è la differenza tra java -version e javac -version?
java -version verifica la versione del runtime Java,
mentre javac -version verifica la versione del compilatore di sviluppo (JDK).
Poiché hanno scopi diversi, controllare entrambi è la pratica standard.
10.2 Perché javac non viene trovato?
- Il JDK non è installato
- PATH non è impostato correttamente
Nella maggior parte dei casi, è una di queste due ragioni.
10.3 Ho installato Java, ma viene ancora mostrata una versione vecchia
Questo di solito significa che un Java diverso ha priorità più alta nel PATH.
Controlla il binario effettivo con where java (Windows) o which java (macOS/Linux).
10.4 Posso usare più versioni di Java in modo sicuro?
Sì, puoi.
Tuttavia, è fondamentale sapere sempre quale Java è attualmente in uso.
10.5 Quale versione di Java dovrei usare?
Se non ci sono requisiti particolari, scegliere una release LTS (Long-Term Support) è l’opzione più sicura.
Se il tuo progetto specifica una versione, dai sempre priorità a quel requisito.

