Блог об it, программировании и интернет-маркетинге

Делюсь наблюдениями и личным опытом в области программирования и интернет-маркетинга

Java. Unsupported major.minor version

Posted on | December 13, 2013 | No Comments

java.lang.UnsupportedClassVersionError Unsupported major.minor version 51.0
и подобные ошибки случаются из-за кода скомпилированного с использованием JDK более высокой версии, чем версия JVM под которой код запускается.

В структуре java class-файла содержится различная мета информации, в том числе минимальная (5-ый, 6-ой байты) и максимальная (7-ой и 8-ой байты) версии формата класса. Что фактически означает, что этот код может исполняться на поддерживающих данные форматы версиях JVM.
Коды форматов для JMV (+ обратная совместимость):
JDK 1.1 = 45 (0x2D hex)
JDK 1.2 = 46 (0x2E hex)
JDK 1.3 = 47 (0x2F hex)
JDK 1.4 = 48 (0x30 hex)
J2SE 5.0 = 49 (0x31 hex)
J2SE 6.0 = 50 (0x32 hex)
J2SE 7 = 51 (0x33 hex)

Скомпилировать под конкретную версию, если текущая версия jdk не ниже указанной, можно с использованием команды вида:
javac -source 1.6 MyClass.java
Как выйти из положения:
1. проапгрейдить свое окружение до соответствующей версии
2. даунгрейдить окружение того, кто предоставил вам скомпилированный код
3. взять сорцы и скомпилировать их под себя, если это возможно

Итого основное правило можно озвучить следующим образом: нельзя запускать классы, скомпилированные старшей версией JDK, под предыдущей версией JVM.

SEO Community Ваау! News2.ru SMI2 Google Bookmarks I.ua Закладки Yandex Ruspace Web-zakladka Zakladok.net delicious БобрДобр.ru Memori.ru rucity.com МоёМесто.ru Mister Wong

Comments