Список номерів основних версій файлу формату 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,?
Саміс

Ні, немає.
Стівен C


2

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

  1. Побудувати шлях
  2. Налаштування контуру зборки
  3. Змініть бібліотеку на відповідну таблицю, яку останній показує другові.
  4. Створіть "jar файл" та компілюйте та виконайте.

Я це зробив, і це спрацювало.


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

Відповідно до таблиці в ОП, основна версія 57 означає, що файл класу був зібраний до рівня байт-коду JDK 13

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.