Список основных номеров версии файла класса 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.
- Путь сборки
- Настроить путь сборки
- Измените библиотеку на корреспондента таблицы, которую друг показывает последним.
- Создайте "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