В сообщении об ошибке ответ уже есть: если там стоит class file version 65.0, файлу нужна Java 21. Расчет всегда один и тот же — число минус 44 дает версию Java. Но важнее самого числа вопрос, чей файл имеется в виду: в большинстве случаев не сервер слишком старый, а один отдельный плагин слишком новый.
Как читать сообщение
Типичная строка выглядит так:
java.lang.UnsupportedClassVersionError: com/example/PluginMain has been compiled by a more
recent version of the Java Runtime (class file version 65.0), this version of the Java Runtime
only recognizes class file versions up to 61.0
В ней есть три подсказки:
com/example/PluginMain— кто вызывает ошибку. Если здесь имя плагина или мода, значит не подходит именно этот файл, а сам сервер в порядке.class file version 65.0— что требуется: 65 − 44 = Java 21.only recognizes … up to 61.0— что сейчас запущено: 61 − 44 = Java 17.
Перевод: плагин, собранный под Java 21, лежит на сервере, который работает с Java 17.
Таблица пересчета
| class file version | Версия Java |
|---|---|
| 52.0 | Java 8 |
| 55.0 | Java 11 |
| 60.0 | Java 16 |
| 61.0 | Java 17 |
| 65.0 | Java 21 |
| 69.0 | Java 25 |
Числа взяты из официальной спецификации JVM. Разница в 44 там постоянна со времен Java 1.0 — поэтому любую будущую версию ты можешь посчитать сам, не расширяя таблицу.
Запомни: среда выполнения Java всегда понимает все более старые версии class-файлов, но никогда более новую. Поэтому плагин для Java 8 без проблем работает на Java 21, а наоборот — никогда.
Какая версия Java нужна какой версии Minecraft?
| Версия Minecraft | Нужная Java |
|---|---|
| до 1.16.5 | Java 8 |
| 1.17 – 1.17.1 | Java 16 (на практике Java 17) |
| 1.18 – 1.20.4 | Java 17 |
| с 1.20.5 | Java 21 |
| с 26.0 | Java 25 |
У нас тебе не нужно это настраивать. Мы определяем среду выполнения по версии Minecraft твоего сервера и ставим ее автоматически. Заказываешь 1.21 — получаешь Java 21, без поиска нужного переключателя.
Для серверных форков вроде Leaf и Leaves мы дополнительно ведем точное соответствие для каждого релиза, вместо того чтобы брать общее правило. Причина простая: форк может отличаться от Vanilla-требований, а оптимистичное предположение ошибется именно тогда, когда это важно. Если для комбинации нет подходящей Java, мы намеренно прерываем процесс, вместо того чтобы запускать слишком старую среду выполнения — сервер, который вообще не стартовал неправильно, проще починить, чем тот, который работает наполовину.
Самый частый случай: плагин, а не сервер
Если сервер только что работал, а ошибка появилась после добавления файла, ситуация понятна. Что делать:
- Запиши имя класса из сообщения. Оно почти всегда указывает на проект.
- Найди у разработчика подходящий вариант сборки. Многие плагины предлагают отдельные загрузки для Java 17 и Java 21, часто с суффиксом
-java17или в отдельной ветке релизов. Самый новый файл не всегда правильный. - Если подходящего варианта нет, тебе нужна более новая версия Minecraft — потому что только она принесет более новую среду выполнения. Как сменить версию без потери мира, описано в Сменить версию Minecraft-сервера.
- Временно удали плагин, если сервер нужно срочно запустить. Как аккуратно добавлять и удалять плагины, показано в Установить Minecraft-моды и плагины.
Другой случай: Java слишком новая
Этот случай редко объясняют, но он регулярно встречается. Старые Forge-модпаки — классический пример 1.12.2 — собраны под Java 8. На Java 21 они падают, правда обычно не с UnsupportedClassVersionError, а с сообщениями об отсутствующих внутренних классах или отклоненных параметрах запуска.
Признак: раньше пак работал или он работает у других, а твой сервер указывает очень старую версию Minecraft. Решение тогда — не более новая Java, а версия Minecraft в панели, которая относится к этому паку, чтобы мы поставили подходящую старую среду выполнения.
Честное замечание: наша автоматическая коррекция в этом случае не срабатывает. Она чинит только направление «слишком старая», то есть когда серверу нужна более новая Java, чем запущенная. Слишком новая Java намеренно не считается отклонением — иначе клиент, который специально выбрал более старую среду выполнения, автоматически снова ее потерял бы.
Что мы берем на себя автоматически
- Подходящая среда выполнения с момента заказа. Версия Java следует за версией Minecraft без отдельной настройки.
- Коррекция при смене версии. Если ты переходишь на версию с более высоким требованием к Java, среда выполнения обновляется вместе с ней.
- Boot-Log важнее расчета. Если твой сервер при запуске сам называет требуемую версию Java, которая выше текущей, мы исправляем это по фактическому измерению, а не по выводу из заказанной версии. Заявление сервера о самом себе надежнее любой таблицы.
- Собственные images остаются нетронутыми. Если сервер работает на выбранной тобой среде выполнения, мы не вмешиваемся.
- Fail-closed вместо почти правильно. Если для комбинации нет подходящей Java, мы прерываем запуск и сообщаем об этом, вместо того чтобы запускать неправильную среду выполнения.
Устранение проблем
| Симптом | Проверка | Решение |
|---|---|---|
Указано class file version 65.0, имя класса относится к плагину |
Сервер работал до добавления? | Скачай сборку плагина для своей версии MC |
| Ошибка сразу при запуске сервера, плагин не указан | Какая версия Minecraft запущена? | Синхронизируй версию и среду выполнения |
| Старый модпак 1.12.2 не стартует | В логе указаны отсутствующие внутренние классы? | Java слишком новая — выбери подходящую версию MC |
| Ошибка после смены версии | Она появилась сразу после перехода? | Дождись перезапуска; если остается, обратись в поддержку с полной строкой |
| Плагин загружается, но функции отсутствуют | В логе предупреждение вместо ошибки? | Другая причина — не версия Java |
FAQ
Могу ли я сам переключить версию Java?
У нас это не нужно: она определяется версией Minecraft твоего сервера. Если тебе нужна другая среда выполнения, правильный путь — сменить версию Minecraft, тогда вся среда будет согласована.
Более новая Java всегда лучше?
Нет. Для Minecraft требуемая версия одновременно является практическим верхним пределом: ядро сервера, моды и плагины под нее настроены. Переход на более высокую среду выполнения «на всякий случай» не дает преимущества и ломает старые моды.
Почему мой плагин работает локально, но не на сервере?
Потому что твоя локальная установка Java может быть новее, чем Java на сервере. Важна среда выполнения на сервере, а не на твоем компьютере.
Как узнать, с какой Java сейчас работает мой сервер?
Сообщение говорит это само: only recognizes class file versions up to 61.0 означает Java 17. Если ошибки нет, запуск сервера указывает версию Java в первых строках консоли.
Нужно ли пересоздавать мир после смены Java?
Нет. Среда выполнения влияет только на запуск, а не на формат мира. А вот смена версии Minecraft может изменить формат мира — перед этим сделай резервную копию.
Следующие шаги
Если сервер снова работает, но тормозит, поможет Minecraft-сервер лагает: исправить Watchdog-Timeout. Если оперативная память не подходит под размер модпака, калькулятор RAM для Minecraft рассчитает потребность.
Ищешь сервер, где версия Java автоматически подходит к версии игры? На странице Арендовать Minecraft-сервер ты найдешь тарифы.
Источники и проверочный стенд
- Требования Java по версиям Minecraft: Minecraft Wiki — Server/Requirements. Прямо указывает Java 16 с 1.17, Java 17 с 1.18 и Java 21 с 1.20.5.
- Соответствие class-file-версий: Oracle — The Java Virtual Machine Specification, Java SE 21, таблица 4.1-A. Подтверждает 52 = Java 8, 55 = Java 11, 60 = Java 16, 61 = Java 17, 65 = Java 21, а также правило, что JVM поддерживает только перечисленные версии и не поддерживает более высокие.
- Java 25: Oracle — The Java Virtual Machine Specification, Java SE 25, таблица 4.1-A. Подтверждает major 69.
Проверочный стенд: 24 августа 2026 года. Новые версии Minecraft могут приносить новые требования к Java; ссылки отражают актуальное состояние соответствующих источников.