Вопрос-ответ

List of Java class file format major version numbers?

Список основных номеров версий формата файла класса Java?

Я видел этот список основных номеров версий для Java в другом посте:







































































































JavaОсновная версия
2266
2165
2064
1963
1862
1761
1660
1559
1458
1357
1256
1155
1054
953
852
751
650
549
1.448
1.347
1.246
1.145
1.0.245

Откуда взят этот список? Есть ли для этого конкретная ссылка? Желательно что-нибудь, что также показывает второстепенные версии?

Переведено автоматически
Ответ 1

Они относятся к версии класса. Если вы попытаетесь загрузить что-либо, скомпилированное для java 6, во время выполнения java 5 вы получите сообщение об ошибке "несовместимая версия класса", получено 50, ожидалось 49. Или что-то в этом роде.

Смотрите Здесь в byte offset 7 для получения дополнительной информации.

Дополнительную информацию также можно найти здесь.

Ответ 2

Официальный источник для получения основного номера версии:

Спецификация виртуальной машины Java SE 21, глава 4. Формат файла класса

Последнюю опубликованную версию спецификации JVM можно найти здесь.

Ответ 3

Я нашел список версий файла класса Java на странице Википедии, которая описывает формат файла класса:

http://en.wikipedia.org/wiki/Java_class_file#General_layout

В разделе смещение в байтах 6 и 7 перечислены версии, которым они соответствуют Java VM.

Ответ 4

Если у вас есть файл класса по адресу build/com/foo/Hello.class, вы можете проверить, на какой версии java он скомпилирован, используя команду:

javap -v <path to class file> | grep "major"

Пример использования:

$ javap -v build/classes/com/example/Book.class | grep major

major version: 57

Согласно таблице в OP, основная версия 57 означает, что файл класса был скомпилирован до уровня байт-кода JDK 13

java