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

Я видел этот список основных номеров версий 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

Ответ 1

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

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

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

Ответ 2

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

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

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

Ответ 3

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

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

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

Ответ 4

Если у вас есть файл класса в 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