# 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

Ci sono due domande nascoste in "disinstallare Java su Mac", e rispondere a quella sbagliata è come la gente si ritrova con una toolchain rotta. La prima è quale Java hai. La seconda è cos'altro sulla macchina conta sulla sua presenza.

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

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

## Dove aiuta vedere l'impronta

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/) 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. Continua a puntare a un percorso che non
esiste più, e ogni nuova shell eredita la variabile rotta. Rimuovi la riga,
oppure cambiala in `export JAVA_HOME=$(/usr/libexec/java_home)` così segue
qualsiasi JDK presente sul sistema.

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
