Guidefor server owners3 min read
Java 25 and the 2026 Minecraft releases
The calendar releases raised the Java floor. Which runtime to install, why a newer one is usually fine, and what actually breaks when the requirement moves.
Check the exact number, do not assume it
Mojang publishes a required Java version in the metadata for every Minecraft version, and that value is what the game checks at startup. It is not a recommendation and it is not derived from the release year.
The Java version checker reads that field directly for any version you pick, so the answer you get is the same one the game uses. That is worth doing rather than trusting a number from a forum post, because the requirement has moved several times recently and old advice ages badly.
What "requires Java 25" means
It means Java 25 or newer. The requirement is a floor.
The mechanism is simple: Java class files carry a format version, and a runtime refuses to load a class newer than it understands. When Mojang compiles the game for Java 25, the class files are stamped Java 25, and any older runtime rejects them immediately.
That is why the failure is so clean. The server does not start, load a world, and then get
confused. It prints UnsupportedClassVersionError, names the version it wanted, and exits.
Nothing is damaged.
Why the floor moved
Each new Java release brings performance work in the garbage collector and the JIT compiler, and language features that make the game's own code simpler. Mojang raises the floor when the benefit is worth leaving older runtimes behind.
For a server operator this is usually good news rather than a chore. A newer runtime is generally faster on the same hardware, and garbage collection pauses, which is what most server "lag spikes" actually are, are exactly what the JVM has improved most in recent releases.
Should you run something newer than required?
Usually yes, and one caveat.
The game is fine with it. Java is careful about backward compatibility, and a newer runtime runs older class files without complaint.
Your plugins and mods are the risk. A plugin compiled for a newer Java than your runtime will not load, which is the same rule applied one level down. Less commonly, a plugin doing something exotic with reflection or bytecode can break on a newer runtime, because each Java release closes off a few more internals that were never meant to be reachable.
So the practical rule: run the newest long-term support release your Minecraft version requires or exceeds. LTS releases get years of security updates, and plugin authors target them. A non-LTS release is fine for a personal server and a poor choice for one other people depend on.
Which releases are LTS is on the Java pages, taken from the runtime publisher rather than from us.
Installing it
Any OpenJDK build works. Temurin from Adoptium is the usual choice on servers and is what this site tracks, with checksums straight from Adoptium's own API on every Java version page.
Install it, then point your start script at it explicitly:
# Not just "java". Say which one.
/usr/lib/jvm/temurin-25/bin/java -Xms6G -Xmx6G -jar server.jar nogui
This matters more than it looks. A machine with several runtimes installed resolves bare
java through whatever the system path decides, which changes when a package updates and
produces a server that mysteriously stops starting. Naming the path removes the whole class
of problem.
Confirm which one you actually got:
java -version
Upgrading Java on a live server
Do it on its own, before anything else:
- Install the new runtime alongside the old one. Do not remove the old one yet.
- Point your start script at the new one.
- Start the server on the Minecraft version you are already running.
- Watch the startup log in full, once. Every plugin that failed to load says so there.
- Leave it a day.
Only then change the Minecraft version, if that is where you are going. Changing the runtime and the game together means that when something breaks you will not know which change broke it, and you will end up undoing both.
Upgrading a server covers the rest of that sequence.
Reading the error
java.lang.UnsupportedClassVersionError: net/minecraft/server/Main
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
Class file version minus 44 gives the Java version. So 69 means Java 25, and 65 means the runtime you have is Java 21. The message is telling you exactly what to install; it just says it in a numbering nobody uses out loud.