Как да поправите java.lang.UnsupportedClassVersionError: Неподдържана major.minor версия

Опитвам се да използвам Notepad++ като универсален инструмент за редактиране, стартиране, компилиране и т.н.

Имам инсталиран JRE и съм настроил променливата си за пътя към директорията .../bin.

Когато стартирам моя "Hello world" в Notepad++, получавам следното съобщение:

java.lang.UnsupportedClassVersionError: test_hello_world :
 Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
       .........................................

Мисля, че проблемът тук е свързан с версиите; някои версии на Java може да са стари или твърде нови.

  1. Как да го поправя?
  2. Трябва ли да инсталирам JDK и да настроя променливата си за пътя към JDK вместо към JRE?
  3. Каква е разликата между променливата PATH в JRE или JDK?
Решение

Показаният номер на версията описва версията на JRE, с която е съвместим файлът на класа.

Посочените основни номера са:

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

(Източник: Уикипедия)

За да отстраните действителния проблем, трябва да опитате да стартирате кода на Java с по-нова версия на Java JRE или да зададете параметъра target на компилатора на Java, за да инструктирате компилатора да създаде код, съвместим с по-ранни версии на Java.

Например, за да генерирате класови файлове, съвместими с Java 1.4, използвайте следния команден ред:

javac -target 1.4 HelloWorld.java

При по-новите версии на компилатора на Java е възможно да получите предупреждение за това, че пътят на bootstrap класа не е зададен. Повече информация за тази грешка можете да намерите в публикация в блога Ново предупреждение на javac за задаване на по-стар източник без bootclasspath.

Коментари (9)

java.lang.UnsupportedClassVersionError се случва поради по-висока версия на JDK по време на компилиране и по-ниска версия на JDK по време на изпълнение.

Коментари (9)

Не се притеснявайте, реших проблема.

Всъщност е просто - трябва да инсталирате ДВА JRE / JDK с една и съща версия.

JRE 6 -> JDK 6

JRE 7 -> JDK 7

И така нататък.

Коментари (1)