Welke Java-versie heeft je Minecraft-server nodig? (Java 25 voor 26.x)
Een Minecraft-server is een Java-programma, en Java komt in versies die niet altijd met elkaar overweg kunnen. Mojang verhoogt de vereiste Java-versie om de paar jaar, en elke keer strandt een deel van de servers op een foutmelding die niets over Java lijkt te zeggen. Sinds Minecraft 26.1 is Java 25 de eis; wie een server op 1.20.4 draait heeft juist Java 17 nodig, en een nostalgische 1.12.2-modpack wil Java 8. Dit artikel geeft de volledige tabel, laat zien hoe je de foutmelding herkent en hoe je van Java-versie wisselt zonder dat je wereld of plugins eraan te pas komen.
De tabel: Minecraft-versie en de bijbehorende Java
- 1.12.2 en ouder: Java 8. Nieuwere Java's werken meestal niet met Forge uit die tijd.
- 1.13 tot en met 1.16.5: Java 8 is de basis; Java 11 werkt vaak ook, maar Forge-modpacks uit deze periode blijven het veiligst op 8.
- 1.17: Java 16 minimaal.
- 1.18 tot en met 1.20.4: Java 17 minimaal. Java 21 werkt op Paper meestal, maar oudere plugins en Forge-versies kunnen struikelen.
- 1.20.5 tot en met 1.21.x: Java 21 minimaal.
- 26.1, 26.2 en 26.3: Java 25 minimaal. Dit is de huidige eis; wie nog op 1.21 zit en wil updaten, heeft naast een nieuwe serverversie ook een Java-upgrade voor de boeg.
De regel is: gebruik de versie die Mojang minimaal eist, of de eerstvolgende LTS-versie erboven. Een oudere Java dan de eis werkt nooit; een veel nieuwere Java werkt soms niet met plugins of mods die op interne Java-functies leunen.
De foutmelding herkennen
De klassieke melding bij een te oude Java is java.lang.UnsupportedClassVersionError: ... has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 65.0. Het getal na "class file version" verraadt de eis: 52 is Java 8, 61 is Java 17, 65 is Java 21, 69 is Java 25. Zie je zo'n regel in de console, dan draait de server onder een te oude Java.
De omgekeerde situatie — een te nieuwe Java — is lastiger te herkennen. Forge 1.12 of 1.16 crasht dan met meldingen over ClassCastException, module java.base does not export of Unable to make ... accessible. Ook dan is de oplossing niet de mod, maar de Java-versie.
Je Java-versie controleren
In de console van je server staat bij het opstarten meestal een regel als Starting minecraft server version 26.2 gevolgd door informatie over de runtime; Paper meldt de Java-versie expliciet in de eerste regels. Op een gehoste server kies je de Java-versie in het paneel, en het commando java -version in een SFTP- of consolesessie laat zien wat er actief is. Bij MC-Node kies je Java per server in het paneel: Java-versie veranderen. Draai je op een VPS, dan installeer je de gewenste versie zelf; de handleiding daarvoor is Java installeren op je VPS.
Wisselen van Java zonder schade
Java wisselen raakt je wereld niet: de savegame, plugins en configuratie staan los van de runtime. Wat wél mis kan gaan is een plugin of mod die op de oude Java leunde. Doe het daarom zo:
- Maak een backup van de hele servermap.
- Zet de server uit, wissel de Java-versie in het paneel (of op de VPS) en start opnieuw.
- Lees de eerste dertig regels van de console: fouten over Java verschijnen daar, niet halverwege.
- Test de plugins die het diepst in de server zitten: permissies, economie, wereldbeheer.
- Gaat het mis, wissel terug; de wereld is onaangetast.
Java 25 en de 26.x-versies: wat verandert er
Sinds 26.1 draait de server op Java 25, en 26.2 en 26.3 houden die eis aan. Voor wie al op 26.2 zit, verandert er met 26.3 dus niets aan Java. Wie van 1.21 komt, moet twee dingen tegelijk doen: de Java-runtime bijwerken én de serversoftware en plugins op een 26.x-versie zetten. Doe dat niet op releasedag: Paper, Purpur en de grote plugins hebben doorgaans een week nodig na een nieuwe Minecraft-versie. Wat er in 26.3 zelf verandert en welke datapacks stukgaan, staat in Minecraft 26.3 en je server.
Geheugen en Java-opties
Naast de versie bepaalt de Java-configuratie hoeveel geheugen de server mag gebruiken: de opties -Xms en -Xmx zetten de onder- en bovengrens. Op een gehoste server regelt het paneel dat op basis van het RAM van je pakket; op een VPS stel je het zelf in en laat je ongeveer 1 GB over voor het besturingssysteem. De veelgebruikte "Aikar's flags" voor de garbage collector werken nog steeds prima op Java 21 en 25 en voorkomen de hikjes die een standaardconfiguratie geeft bij grote werelden.
Java op een VPS: meerdere versies naast elkaar
Draai je meerdere servers op één VPS, dan wil je vaak twee Java-versies tegelijk: 17 voor een oude modpack en 25 voor een 26.x-server. Dat kan zonder gedoe door elke versie in een eigen map te installeren (bijvoorbeeld via de pakketten van Adoptium of de distributie zelf) en in het startscript van elke server het volledige pad naar de juiste java te gebruiken in plaats van het losse commando. Zo bepaalt niet de systeemstandaard welke versie een server krijgt, maar het script. Controleer na een systeemupdate wel of de standaard-Java niet is gewisseld; een apt upgrade kan de symlink verzetten en dan start de server met de verkeerde versie.
Samengevat
- 26.x: Java 25. 1.20.5 tot 1.21: Java 21. 1.18 tot 1.20.4: Java 17. 1.17: Java 16. 1.16 en ouder: Java 8.
- "class file version 69" in de foutmelding betekent: de server wil Java 25.
- Wisselen raakt je wereld niet; maak toch een backup en lees de eerste regels van de console.
- Update Java vóór je naar 26.x gaat, maar niet op releasedag van een nieuwe Minecraft-versie.