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


174

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

  • Java 1.2 использует основную версию 46
  • Java 1.3 использует основную версию 47
  • Java 1.4 использует основную версию 48
  • Java 5 использует основную версию 49
  • Java 6 использует основную версию 50
  • Java 7 использует основную версию 51
  • Java 8 использует основную версию 52
  • Java 9 использует основную версию 53
  • Java 10 использует основную версию 54
  • Java 11 использует основную версию 55
  • Java 12 использует основную версию 56
  • Java 13 использует основную версию 57
  • Java 14 использует основную версию 58

Ссылки:

https://blogs.oracle.com/darcy/entry/source_target_class_file_version https://en.wikipedia.org/wiki/Java_class_file#General_layout

Ответы:


46

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

Смотрите здесь в байтовом смещении 7 для получения дополнительной информации.

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


Есть ли способ вывести основной номер версии (версию класса) напрямую из javac , без использования существующего класса, например javap -verbose MyClass,?
Самис

Нет, нет
Стивен С.


2

Если у вас возникли проблемы с «компилятором ошибок файла класса», это можно решить, изменив JRE проекта на его корреспондента через Eclipse.

  1. Путь сборки
  2. Настроить путь сборки
  3. Измените библиотеку на корреспондента таблицы, которую друг показывает последним.
  4. Создайте «jar file», скомпилируйте и выполните.

Я сделал это, и это сработало.


0

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

javap -v build/com/foo/Hello.class | grep "major"

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

$ javap -v build/classes/java/main/org/aguibert/liberty/Book.class | grep major
  major version: 57

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.