# Java verwijderen op de Mac: JDK's, JRE-resten, PATH

> Verwijder JDK- en JRE-installaties, ruim resterende Java-mappen op en herstel PATH of JAVA_HOME zonder apps te breken die nog een runtime nodig hebben.

Published: 2026-08-08 | Updated: 2026-10-18

In "Java verwijderen op de Mac" zitten twee vragen verstopt, en het verkeerde
antwoord is hoe mensen met een kapotte toolchain eindigen. De eerste is welke Java je hebt. De
tweede is wat er verder op de machine verwacht dat die er nog is.

De eigen instructies van Oracle zijn kort, en de belangrijkste regel daarin is geen stap.
Het is een waarschuwing over een map die je met rust moet laten.

Voer voordat je een bestand aanraakt `/usr/libexec/java_home -V` uit. Dat maakt van een vage Java-installatie
een lijst van echte JDK's en paden, zodat je één versie kunt verwijderen via dezelfde
pakketbeheerder of hetzelfde installatieprogramma dat hem heeft geplaatst. De opdrachten onder `/usr/bin` zijn
systeemstubs, niet de runtime die je zoekt.

## Haal Java niet weg uit /usr/bin

[De huidige installatiegids van Oracle voor de JDK op macOS](https://docs.oracle.com/en/java/javase/25/install/installation-jdk-macos.html)
zegt het direct: probeer Java niet te verwijderen door de Java-tools uit
`/usr/bin` te halen. Die map hoort bij de systeemsoftware, en elke wijziging wordt
door Apple teruggezet bij de volgende macOS-update.

Dit is de meest voorkomende manier waarop de klus misgaat. `which java` geeft een
pad onder `/usr/bin` terug, en dat lijkt het antwoord, maar dat is het niet. Op macOS zijn dat
stubs die wijzen naar de runtime die echt geïnstalleerd is. Ze verwijderen haalt de
wegwijzers weg, niet het gebouw, en macOS zet ze later toch terug.

## Weet welke Java je verwijdert

Een runtime en een ontwikkelkit zijn verschillende installaties met verschillende verwijderingen.

De Oracle JRE, de consumentenruntime met de browserplug-in en het voorkeurenpaneel,
staat op drie plekken die Oracle noemt:

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

Een JDK staat apart, installeert onder `/Library/Java/JavaVirtualMachines/`, en verwijderen
vraagt beheerdersrechten. Je kunt er meerdere naast elkaar hebben, en dat is normaal
en vaak bewust.

<figure class="blog-diagram">
  <img src="https://mole.fit/img/blog/java-runtimes-and-stubs.webp" width="1360" height="454" loading="lazy" alt="Opdrachtregelstubs in systeemmappen wijzen naar JDK's die onder Library Java Virtual Machines staan, terwijl de Oracle-runtimeplug-in en het voorkeurenpaneel een aparte installatie zijn.">
  <figcaption>De opdrachten in de systeemmappen zijn verwijzingen, niet de runtime. Een JDK verwijderen haalt een echte installatie weg. Alleen de verwijzingen weghalen breekt de wegwijzers, en macOS zet ze terug.</figcaption>
</figure>

Zet op een rij wat er echt geïnstalleerd is voordat je beslist:

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

Dit toont elke JDK die het systeem kent, met versie en pad. Heeft die lijst
één regel, dan is de keuze eenvoudig. Heeft hij er vier, dan telt de volgende sectie.

## De verkeerde JDK verwijderen breekt andere software

Java wordt zelden voor zichzelf geïnstalleerd. Android-tooling, Elasticsearch, Minecraft-launchers, JetBrains-IDE's, Apache-tooling en diverse zakelijke vpn- en afdrukclients
leveren een JVM mee of hangen ervan af. Sommige bundelen hun eigen kopie en merken niets.
Andere pakken wat het systeem aanbiedt en stoppen met werken als dat verandert.

Is een JDK door een pakketbeheerder geïnstalleerd, verwijder hem dan op dezelfde manier als hij kwam. Een
via Homebrew geïnstalleerde Temurin gaat eruit met `brew uninstall`, en de bestanden met de hand
wegtrekken laat de pakketdatabase beweren dat hij er nog is.

## Verwijder een JDK op de ondersteunde manier

Voor een Oracle JDK uit een `.pkg` is het gedocumenteerde verwijderdoel van Oracle de
bijpassende map onder
`/Library/Java/JavaVirtualMachines/` die de versie in de naam draagt, en die heeft
`sudo` nodig. Verwijder één versie per keer en controleer de tools die voor jou tellen voordat
je de volgende weghaalt.

Daarna mag `/usr/libexec/java_home -V` hem niet meer noemen, en elke
`JAVA_HOME` die je met de hand in een shellprofiel hebt gezet, wijst nu naar niets. Die variabele is
de op een na meest voorkomende oorzaak van een toolchain die na een schone verwijdering faalt.

## Controleer voordat je de terminal sluit

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

De eerste toont wat er overblijft. De tweede meldt een versie, of zegt dat er geen
runtime geïnstalleerd is. Op een machine die je wilde leegmaken, is dat het juiste antwoord
en geen fout.

## Waar een voetafdruk helpt

De resten van Java zijn klein, verspreid en saai: caches, voorkeuren, een plug-in, een
voorkeurenpaneel. Het interessante deel is de inventaris, en de terminal geeft je die al.
Wil je liever de hele voetafdruk van een JDK zien, of van de apps die
er een bundelen, in één lijst met groottes, dan doet [Mole](https://mole.fit/) dat zonder dat je de
paden van tevoren hoeft te kennen.

## Drie plekken om daarna te controleren

De eerste is je shellprofiel. Een met de hand geschreven `JAVA_HOME` in `~/.zshrc` of
`~/.zprofile` vertrekt niet met de JDK. Hij blijft wijzen naar een pad dat niet
meer bestaat, en elke nieuwe shell erft de kapotte variabele. Haal de regel weg,
of verander hem in `export JAVA_HOME=$(/usr/libexec/java_home)` zodat hij volgt
wat het systeem heeft.

De tweede zijn je IDE's. JetBrains-tools en Android Studio onthouden een specifiek JDK-pad per project en volgen een systeemwijziging niet. Dat zie je als één project
niet bouwt terwijl de opdrachtregel in orde is.

De derde is alles wat een pakketbeheerder heeft geïnstalleerd.
`brew list | grep -i -E 'jdk|temurin|zulu|openjdk'` toont wat van Homebrew kwam.
Die gaan eruit met `brew uninstall`. Hun mappen met de hand verwijderen laat
de pakketdatabase denken dat ze nog geïnstalleerd zijn.

---

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