К сожалению, это не работает в обратную сторону. Невозможно поддержать фичи, которые еще не были придуманы.
Скомпилированный .class файл хранит в себе версию байткода
x.y
– версию формата файла. Минорная часть y
версии отражает совместимые технические изменения в рамках той же самой версии Java. Мажорная часть x
увеличивается в каждом следующем релизе. Версии формата для разных релизов:Java SE 14 = 58
Java SE 13 = 57
Java SE 12 = 56
Java SE 11 = 55
Java SE 10 = 54
Java SE 9 = 53
Java SE 8 = 52
Java SE 7 = 51
Java SE 6.0 = 50
Java SE 5.0 = 49
JDK 1.4 = 48
JDK 1.3 = 47
JDK 1.2 = 46
JDK 1.1 = 45
Ошибка
UnsupportedClassVersionError
возникает, когда JVM пытается загрузить слишком новую версию класса. Чтобы получить байткод, совместимый со старыми JVM, при компиляции необходимо передать версию в параметре --release
(до Java 8 в параметрах -source
и -target
).