Come verificare la versione di Java (Windows, macOS, Linux): java -version & javac -version

目次

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 eseguitajava -version
  • La versione del JDK (compilatore) per lo sviluppojavac -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 -version e javac -version per lo scopo corretto
  • 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
  • java funziona ma javac no, 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”
  • javac non è 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)

CommandWhat It ChecksMain Use
java -versionJava at runtimeRunning apps / verifying runtime behavior
javac -versionCompiler (JDK)Development / builds

Un fraintendimento comune è:

  • Se java -version funziona, 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:

  1. java -version → Verifica la versione Java usata a runtime
  2. javac -version → Conferma che il JDK di sviluppo è disponibile
  3. 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 17
  • 1.8.x → Java 8
  • 21.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 -version dovrebbe mostrare l’ultima versione.”

In realtà, questo non è garantito.

Il motivo è semplice:

  • java -version esegue il primo java che 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.

  • javaesegue un programma già compilato
  • javaccompila 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 → 17
  • javac -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:

  • javac non è 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 bin non è 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 -versionPosso eseguire Java?
  • javac -versionPosso 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.

  1. Apri Prompt dei comandi o PowerShell
  2. 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
  • javapath appare 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:

  1. java -version
  2. javac -version
  3. where java
  4. echo %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.

  1. Apri Terminale
  2. 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 17
  • java -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:

  1. java -version
  2. javac -version
  3. /usr/libexec/java_home
  4. /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 17
  • java -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:

  1. java -version
  2. javac -version
  3. which java
  4. update-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 bin di 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 java e javac sotto 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 -version soddisfa i requisiti?
  • L’applicazione si avvia correttamente?

9.2 Se il tuo obiettivo è lo sviluppo o le build

  • javac -version soddisfa i requisiti?
  • java e javac mostrano 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.