Как определить какой версии *.class файл?

Автор: zje , 4 августа 2021

Иногда при запуске приложения, может возникать ошибка: Exception in thread "main" java.lang.UnsupportedClassVersionError: ... has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0. Здесь 55.0 и 52.0 - версии class файлов.
Причина - запуск приложения на более ранней версии jvm.
Определить версию конкретного class файла:
Linux
javap -verbose  TestClass | grep "major"

Windows 
javap -verbose MyClass | findstr "major"

Пример результата вызова:
Пример вызова javap

Определить какие версии class файлов какая jvm поддерживает, можно воспользоваться таблицей из документации:

Версия

Java SE

Дата выхода

Major

Поддерживаемые major версии

1.0.2

Май 1996

45

45

1.1

Февраль 1997

45

45

1.2

Декабрь 1998

46

45 .. 46

1.3

Май 2000

47

45 .. 47

1.4

Февраль 2002

48

45 .. 48

5.0

Сентябрь 2004

49

45 .. 49

6

Декабрь 2006

50

45 .. 50

7

Июль 2011

51

45 .. 51

8

Март 2014

52

45 .. 52

9

Сентябрь 2017

53

45 .. 53

10

Март 2018

54

45 .. 54

11

Сентябрь 2018

55

45 .. 55

12

Март 2019

56

45 .. 56

13

Сентябрь 2019

57

45 .. 57

14

Март 2020

58

45 .. 58

15

Сентябрь 2020

59

45 .. 59

16

Март 2021

60

45 .. 60

Комментарии