Как изменить версию Java по умолчанию в Linux
Question: When I am trying to run a Java program on Linux, I am getting the following error. Looks like the Java program is compiled for a different Java version than the default Java program installed on my Linux. How can I switch the default Java version on Linux?
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/linux-console.net/hmon/gui/NetConf : Unsupported major.minor version 51.0
Когда Java-программа компилируется, среда сборки устанавливает цель, которая является самой старой версией JRE, которую может поддерживать программа. Если вы запускаете программу Java в системе Linux, которая не соответствует минимальным требованиям к версии JRE, вы столкнетесь со следующей ошибкой при запуске программы.
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/linux-console.net/hmon/gui/NetConf : Unsupported major.minor version 51.0
Например, в этом случае программа скомпилирована для Java JRE 1.7, но в системе установлена только Java JRE 1.6.
Чтобы решить эту проблему, вам нужно изменить версию Java по умолчанию, которую вы используете, на Java JRE 1.7 или выше (при условии, что такая JRE уже установлена).
Сначала проверьте доступные версии Java в вашей системе Linux с помощью команды update-alternatives :
$ sudo update-alternatives --display java

В этом примере установлены четыре разные версии Java: OpenJDK JRE 1.6, Oracle Java JRE 1.6, OpenJDK JRE 1.7 и Oracle Java JRE 1.7. Версия Java по умолчанию в настоящее время установлена на OpenJDK JRE 1.6.
Если необходимая Java JRE не установлена, вы всегда можете установить ее, используя эту инструкцию.
Теперь, когда есть подходящие кандидаты для перехода, вы можете переключить версию Java по умолчанию среди доступных Java JRE, выполнив следующую команду:
$ sudo update-alternatives --config java
При появлении запроса выберите версию Java, которую вы хотите использовать. В этом примере мы выбираем Oracle Java JRE 1.7.

Теперь вы можете проверить версию Java по умолчанию следующим образом.
$ java -version

Наконец, если вы где-то определили переменную среды JAVA_HOME , обновите переменную в соответствии с новой установленной версией Java по умолчанию.
Все права защищены. © Linux-Console.net • 2019-2023
Смена версии Java (JDK)
По умолчанию для всех Minecraft Java Edition серверов устанавливается Java 11 или 16, в зависимости от устанавливаемой версии игры. Поскольку, начиная с версии 1.17, игра требует Java 16 для работы, в то время как старые версии (например, 1.12.2) её не поддерживают, клиенты могут сталкиваться с подобными ошибками при запуске серверов:
Error: LinkageError occurred while loading main class net.minecraft.server.Main java.lang.UnsupportedClassVersionError: net/minecraft/server/Main has been compiled by a more recent version of the Java Runtime (class file version 60.0), this version of the Java Runtime only recognizes class file versions up to 55.0
Конкретно эта ошибка вызвана тем, что сервер, не поддерживающий версии Java до 16, запускается с Java 11. Владельцы серверов с Forge могут сталкиваться с тем, что их сервера не запускаются, в самом начале выдавая такую ошибку:
A problem occurred running the Server launcher.java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at net.minecraftforge.fml.relauncher.ServerLaunchWrapper.run(ServerLaunchWrapper.java:70) at net.minecraftforge.fml.relauncher.ServerLaunchWrapper.main(ServerLaunchWrapper.java:34) Caused by: java.lang.ClassCastException: class jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to class java.net.URLClassLoader (jdk.internal.loader.ClassLoaders$AppClassLoader and java.net.URLClassLoader are in module java.base of loader 'bootstrap') at net.minecraft.launchwrapper.Launch. (Launch.java:34) at net.minecraft.launchwrapper.Launch.main(Launch.java:28) . 6 more
Эта ошибка тоже вызвана использованием неподдерживаемой версии Java. Старые версии Forge поддерживают только Java 8 и не умеют работать с новыми механизмами загрузки классов, введёнными в Java 9. В обоих случаях возникает необходимость установить другую версию Java. Клиенты в большинстве случаев могут сделать это сами.
Сервера на хостинге запускаются в Docker контейнерах, что позволяет изолировать их друг от друга и относительно легко создать нужную среду для сервера. В Docker эта среда создаётся из так называемого образа. Соответственно, для изменения версии Java в контейнере, нужно изменить Docker образ.
Инструкция
- Перейдите во вкладку «Запуск» в панели управления сервером

- В разделе Docker образ выберите нужную версию.
- Java 8 — ghcr.io/pterodactyl/yolks:java_8
- Java 11 — ghcr.io/pterodactyl/yolks:java_11
- Java 16 — ghcr.io/pterodactyl/yolks:java_16
- Java 17 — ghcr.io/pterodactyl/yolks:java_17
Всё, версия Java изменена. Для применения изменений необходимо перезапустить сервер.
Возможные проблемы
Не могу выбрать образ
На некоторых серверах, особенно старых, вы можете столкнуться с тем, что выбрать образ нельзя:

В таких ситуациях просто обратитесь в техническую поддержку, мы установим нужную версию Java.
superhub hosting
Лебедев Илья Олегович
ИНН 772148048957
+79035652746
[email protected]
ул. Хуторская 2-я, д. 38А, стр. 26,
Москва, Россия
Управление
- Личный кабинет
- Панель управления
- Пополнить баланс
Как изменить версию java?
У меня сейчас 8 версия
java version «1.8.0_231»
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)
При этом установлена и 13
но через cmd видит только 8
- Вопрос задан более трёх лет назад
- 3182 просмотра
Комментировать
Решения вопроса 2

Прописать нужную версию в PATH и системных переменных
Ответ написан более трёх лет назад
Комментировать
Нравится 3 Комментировать

Sergey Shvyrev @CellycoMobiles
indi developer @CellycoMobiles
Вариантов может быть несколько.
Для себя выбрал Jabba.
Из консоли помогает установить любой JDK и переключиться. Не надо прописывать пути. Всё сама сделает.
Но я часто переключаюсь между разными версиями.
за день мне нужен и HotSpot, и Graal, и OPENJDK.
Смена версии java в intellij idea
@АлексейШиманский, если я правильно Вас понял, то второе. Я имею ввиду, импорт классов. Ибо даже при попытке создать ‘JavaFX application’ все импортированные классы подсвечены красным.
30 авг 2017 в 16:03
@Андрей правте ваш вопрос на основе комментариев.
30 авг 2017 в 16:27
Для каждого проекта надо менять версию jdk?
9 ноя 2021 в 7:32
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Если я правильно понял, то.
Попробуй в начале установить верную версию JDK в проект. Это описано в вопросе Не компилируется Java программа в IntelliJ Idea.
После установки (или если уже все и так было проделано), то зайди:
Project Structure → Project Settings → Project → Project language level и выбрать подходящий под проект уровень.

Отслеживать
ответ дан 30 авг 2017 в 16:09
Алексей Шиманский Алексей Шиманский
72k 12 12 золотых знаков 91 91 серебряный знак 180 180 бронзовых знаков
Спасибо! Оказывается, в project sdk стояла 1.7.
30 авг 2017 в 16:13
- java
- intellij-idea
-
Важное на Мете
Связанные
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.17.3574