Почему поддерживаемая версия класса Java в моей Mac OS JRE такая низкая и как это исправить? ⇐ JAVA
-
Anonymous
Почему поддерживаемая версия класса Java в моей Mac OS JRE такая низкая и как это исправить?
Согласно каждой диагностике, которую я могу запустить на своем iMac двухлетней давности, моей версией среды выполнения Java является Java 8 Update 391, которая (на момент написания этой статьи) является последней и лучшей JRE, которую можно загрузить для Mac с сайта java.com. Это та же версия, которую Mac OS рекомендует в настоящее время. Недавно я скомпилировал проект на своем ПК с помощью JDK 21. Это не очень хорошо сочетается с Mac JRE, которая утверждает, что может запускать только версии классов до 52.0 (JDK 21 создает версию класса 62.0).
Чтобы решить эту проблему, я поручил IDE скомпилировать байт-код class-version-52, но, согласно этой таблице, class-version-52 использует версию -target 8 (! ), то есть полные 13 версий, удаленных из 21, которые я компилирую. Версия на самом деле настолько старая, что IDE выдает мне предупреждения о том, что -target 8 теперь устарел и скоро перестанет поддерживаться, а такие функции, как блочные строки и т. д., недоступны. .
Что мне здесь не хватает? Мой Mac JRE ужасно устарел? Если да, то почему и что я могу сделать, чтобы это исправить?
Я неправильно понимаю таблицу?
Почему мне вообще нужно использовать -target? Разве последняя версия кода JRE не должна поддерживать код, скомпилированный последней версией JDK?
(Приношу извинения, если это дубликат, но при максимальном поиске подобных проблем выдаются только решения «Обновите JRE» и «Скомпилируйте для более низкой целевой версии»., тогда как мне конкретно интересно почему мой определенно актуальный Mac JRE кажется сильно устаревшим.)
Согласно каждой диагностике, которую я могу запустить на своем iMac двухлетней давности, моей версией среды выполнения Java является Java 8 Update 391, которая (на момент написания этой статьи) является последней и лучшей JRE, которую можно загрузить для Mac с сайта java.com. Это та же версия, которую Mac OS рекомендует в настоящее время. Недавно я скомпилировал проект на своем ПК с помощью JDK 21. Это не очень хорошо сочетается с Mac JRE, которая утверждает, что может запускать только версии классов до 52.0 (JDK 21 создает версию класса 62.0).
Чтобы решить эту проблему, я поручил IDE скомпилировать байт-код class-version-52, но, согласно этой таблице, class-version-52 использует версию -target 8 (! ), то есть полные 13 версий, удаленных из 21, которые я компилирую. Версия на самом деле настолько старая, что IDE выдает мне предупреждения о том, что -target 8 теперь устарел и скоро перестанет поддерживаться, а такие функции, как блочные строки и т. д., недоступны. .
Что мне здесь не хватает? Мой Mac JRE ужасно устарел? Если да, то почему и что я могу сделать, чтобы это исправить?
Я неправильно понимаю таблицу?
Почему мне вообще нужно использовать -target? Разве последняя версия кода JRE не должна поддерживать код, скомпилированный последней версией JDK?
(Приношу извинения, если это дубликат, но при максимальном поиске подобных проблем выдаются только решения «Обновите JRE» и «Скомпилируйте для более низкой целевой версии»., тогда как мне конкретно интересно почему мой определенно актуальный Mac JRE кажется сильно устаревшим.)
Мобильная версия