Menu

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:

  1. Install the new runtime alongside the old one. Do not remove the old one yet.
  2. Point your start script at the new one.
  3. Start the server on the Minecraft version you are already running.
  4. Watch the startup log in full, once. Every plugin that failed to load says so there.
  5. 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.

Frequently asked

Can I run a newer Java than the requirement?

Nearly always yes. The requirement is a floor, not a target. What can object is not the game but a plugin or mod compiled against an older Java, or an agent that inspects the runtime's internals.

What happens if my Java is too old?

The server refuses to start and prints UnsupportedClassVersionError naming the version it needed. It fails before touching your world, so nothing is damaged.

Which Java distribution should I use?

Any OpenJDK build works. Temurin from Adoptium is the common choice for servers and is what we track and publish checksums for. There is no meaningful gameplay difference between distributions.

Do I need the JDK or is the JRE enough?

A JRE is enough to run a server. A full JDK also works and is often easier to obtain, since several distributions no longer ship a separate JRE.

Referenced on this site

Last reviewed 2026-07-27. Version data on this site updates automatically; this guide is reviewed by hand when the ecosystem changes.