# Rimuovere Java dal Mac senza rompere la toolchain

> Lascia stare gli stub di sistema, fai l'inventario dei JDK installati prima di eliminarne uno e controlla cosa dipende ancora dal runtime che stai per rimuovere

Published: 2026-08-08 | Updated: 2026-09-05

Prima di disinstallare Java dal Mac, rispondi a due domande: quale versione hai installato e quali altri programmi ne hanno bisogno. Saltare questa verifica può rendere inutilizzabili i tuoi strumenti di sviluppo.

Le istruzioni di Oracle sono brevi, e la riga più importante non è un passaggio. È un avviso su una directory che dovresti lasciare stare.

Prima di eliminare i file di supporto, confronta la [procedura ufficiale attuale di Oracle JDK](https://docs.oracle.com/en/java/javase/25/install/installation-jdk-macos.html). Se il produttore offre un programma dedicato o un comando nell’app, usalo per primo e tratta dopo solo i residui di cui puoi confermare il proprietario.

Il documento Oracle copre solo i JDK installati dal `.pkg` di Oracle, non Temurin, Homebrew o i runtime inclusi nelle app.

## Non rimuovere Java da /usr/bin

Oracle lo afferma direttamente: non tentare di disinstallare Java rimuovendo gli strumenti Java da `/usr/bin`. Quella directory fa parte del software di sistema, e ogni modifica viene annullata da Apple al successivo aggiornamento di macOS.

Questo è il modo più comune in cui l'operazione va male. Digitare `which java` restituisce un percorso sotto `/usr/bin`, che sembra la risposta, e non lo è. Su macOS quelli sono stub che puntano al runtime effettivamente installato. Eliminarli rimuove i cartelli, non l'edificio, e macOS li ripristina comunque in seguito.

## Sapere quale Java stai rimuovendo

Un runtime e un kit di sviluppo sono installazioni diverse con rimozioni diverse.

Il JRE di Oracle, il runtime per utenti finali con il plug-in del browser e il pannello delle preferenze, si trova in tre posti che Oracle indica:

```
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin
/Library/PreferencePanes/JavaControlPanel.prefPane
~/Library/Application Support/Oracle/Java
```

Un JDK è separato, si installa sotto `/Library/Java/JavaVirtualMachines/`, e rimuoverlo richiede privilegi di amministratore. Puoi averne diversi affiancati, il che è normale e spesso voluto.

<figure class="blog-diagram">
  <img src="https://mole.fit/img/blog/java-runtimes-and-stubs.webp" width="1360" height="454" loading="lazy" alt="Gli stub della riga di comando nelle directory di sistema puntano ai JDK installati sotto Library Java Virtual Machines, mentre il plug-in e il pannello delle preferenze del runtime di Oracle sono un'installazione separata.">
  <figcaption>I comandi nelle directory di sistema sono puntatori, non il runtime. Rimuovere un JDK rimuove un'installazione reale; rimuovere i puntatori spezza solo i cartelli, e macOS li rimette a posto.</figcaption>
</figure>

Elenca cosa è effettivamente installato prima di decidere:

```
/usr/libexec/java_home -V
```

Questo stampa ogni JDK che il sistema conosce, con versione e percorso. Se l'elenco ha una sola voce, la scelta è semplice. Se ne ha quattro, allora conta la sezione successiva.

## Rimuovere il JDK sbagliato rompe altro software

Java è raramente installato da solo. Strumenti Android, Elasticsearch, launcher Minecraft, IDE JetBrains, strumenti Apache e diversi client VPN e di stampa aziendali includono una JVM oppure ne dipendono. Alcuni includono la propria copia e non ne risentono. Altri usano ciò che il sistema offre e smettono di funzionare quando cambia.

Se un JDK è stato installato da un gestore di pacchetti, rimuovilo con lo stesso gestore con cui è arrivato. Un temurin installato con Homebrew si disinstalla con `brew uninstall`, e togliere i file a mano lascia il database dei pacchetti convinto che sia ancora presente.

## Rimuovi un JDK nel modo ufficiale

Per un JDK installato da un `.pkg`, si rimuove la directory sotto `/Library/Java/JavaVirtualMachines/` che porta la versione nel nome, e serve `sudo`. Rimuovi una versione alla volta e controlla gli strumenti che ti interessano prima di rimuovere la successiva.

Dopo, `/usr/libexec/java_home -V` non dovrebbe più elencarlo, e qualsiasi `JAVA_HOME` impostato a mano in un profilo shell ora non punta a nulla. Quella variabile è la seconda causa più comune di una toolchain che fallisce dopo una rimozione pulita.

## Controlla prima di chiudere il Terminale

```
/usr/libexec/java_home -V
java -version
```

Il primo mostra cosa resta. Il secondo o riporta una versione o ti dice che nessun runtime è installato, che su una macchina che volevi ripulire è la risposta corretta e non un errore.

## Quando serve un elenco dei file installati

I residui di Java sono piccoli, sparsi e noiosi: cache, preferenze, un plug-in, un pannello delle preferenze. La parte interessante è l'inventario, e il Terminale te lo dà già. Se preferisci vedere l'intera impronta di un JDK o delle app che ne includono uno, in un unico elenco con dimensioni, [Mole](https://mole.fit/it/) lo fa senza chiederti di conoscere i percorsi in anticipo.

## Tre posti da controllare dopo

Il primo è il profilo della shell. Un `JAVA_HOME` scritto a mano in `~/.zshrc` o
`~/.zprofile` non sparisce insieme al JDK. Se indica il JDK rimosso, ogni nuova shell
eredita il percorso non valido. Rimuovi la riga se non ti serve più alcun JDK.
Se ne resta uno adatto, verifica il suo percorso oppure usa
`export JAVA_HOME=$(/usr/libexec/java_home)` e controlla la versione selezionata.

Il secondo sono gli IDE. Gli strumenti JetBrains e Android Studio memorizzano un percorso JDK
specifico per progetto e non seguono un cambiamento di sistema: il sintomo tipico è un progetto
che non compila mentre dalla riga di comando tutto funziona.

Il terzo è tutto ciò che ha installato un package manager.
`brew list | grep -i -E 'jdk|temurin|zulu|openjdk'` mostra cosa proviene da Homebrew.
Quelli si disinstallano con `brew uninstall`; cancellare le directory a mano lascia
il database dei pacchetti convinto che siano ancora installati.

---

Canonical HTML page: https://mole.fit/it/blog/how-to-uninstall-java-mac
Blog index for agents: https://mole.fit/it/blog/llms.txt
Site index for agents: https://mole.fit/llms.txt
