Как исправить ошибку java.lang.UnsupportedClassVersionError: Неподдерживаемая версия major.minor

1573

Я пытаюсь использовать 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?
Erjan
источник
Вы также установили JDK? jre - это среда Java RunTime. Для создания java-приложений также необходим jdk
CyprUS,
Да, я сделал, и теперь моя переменная пути указывает на то, где находится JDK. все же у меня все еще есть эта ошибка "неподдерживаемой минорной версии 51.0", как вы думаете, я должен установить более старую версию jdk? Я использую JDK 1.7.0
ERJAN
20
Это случилось со мной в Mac OS X, когда у меня были проблемы из-за странной ситуации с Apple java 6 и Oracle java 7 в OSX в эти дни. короткая версия: скомпилируйте с JDK7, запустите с JDK6, получите это.
Уоррен П
7
В java ClassName должно начинаться с заглавной буквы;)
Ashish Panery
5
Для Эль-Капитана этот ответ исправил это для меня: stackoverflow.com/a/34201991/1615594
tsuz

Ответы:

1941

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

Сообщенные основные цифры:

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

(Источник: Википедия )

Чтобы исправить реальную проблему, вы должны попытаться либо запустить код Java с более новой версией Java JRE, либо указать целевой параметр для компилятора Java, чтобы дать указание компилятору создавать код, совместимый с более ранними версиями Java.

Например, для генерации файлов классов, совместимых с Java 1.4, используйте следующую командную строку:

javac -target 1.4 HelloWorld.java

В более новых версиях Java-компилятора вы, вероятно, получите предупреждение о том, что путь к классу начальной загрузки не задан. Больше информации об этой ошибке доступно в сообщении в блоге. Новое предупреждение javac для установки более старого источника без bootclasspath .

Юха Паломяки
источник
167
«Показанный номер версии описывает, какая версия использовалась Java для компиляции кода». Нет. Он показывает версию JRE, с которой совместим файл класса. Используя опции кросс-компиляции, вы можете использовать 1.7 JDK для компиляции кода с версией класса 1.1 (через 1.7).
Эндрю Томпсон
85
Этот ответ не объясняет, как это исправить, поскольку вопрос задан?
Джонатан Леунг
7
Это хорошее решение для прямой компиляции предыдущей версии из Eclipse: stackoverflow.com/a/16345710/2091700
Alphaaa
19
В проекте eclipse => Proerties => java compiler; установите «уровень соответствия компилятора» на версию, соответствующую вашему jre или jdk. Что касается меня, это 1,6 для JRE 1,6
Сэм
5
Это может произойти, когда источник компилятора установлен в несоответствии с текущей компиляцией JRE / JDK. Например, я нашел следующие значения из папки eclipse .settings, org.eclipse.jdt.core.compiler.compliance = 1.7, org.eclipse.jdt.core.compiler.source = 1.7, org.eclipse.jdt.core.compiler .codegen.targetPlatform = 1.7. И мой компилятор был 1.6.0_32. Проблема была решена после изменения значений до 1.6. Проблема возникла после того, как я скопировал проект из другой рабочей области, где я использовал JDK 1.7 :(
Gana
367

java.lang.UnsupportedClassVersionError происходит из-за более высокого JDK во время компиляции и более низкого JDK во время выполнения.

Вивек Кумар Рэй
источник
11
+1: изменение этой символической ссылки ( /etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java) на версию, использованную для компиляции с javac, решило ее
ezdazuzena
1
Как я могу внести изменения выше?
Анкур Райяни
8
Проект -> Свойства -> Компилятор Java Включите настройки проекта. Затем выберите Compliance Compliance Level до 1.7, 1.6 или 1.5, соберите и протестируйте свое приложение.
Вивек Кумар Рэй
Когда я перешел на Java 7, Eclipse продолжал пытаться работать на Java 6 ... не знаю почему. Деинсталлированный старый JDK помог мне.
HDave
9
@ezdazuzena использовать sudo update-alternatives --config javaдля этого.
Турбьёрн Равн Андерсен
115

В Eclipse я просто зашел в команду меню Window -> Preferences -> Java -> Compiler и затем установил «Уровень соответствия компилятора» на 1.6.

Cacovsky
источник
3
В eclipse иногда аспекты проекта также должны быть изменены на соответствующую версию Java.
Билал Мирза
6
Спасибо. Стоит отметить, что настройка среды выполнения Eclipse по умолчанию (JRE, которая идет по пути сборки) является отдельной настройкой. Я установил JRE, но не уровень соответствия компилятора; это исправило это.
wchargin
И как вы сделали вывод из сообщения об ошибке, что это было правильное место для установки опции?
Александр
Может быть так: stackoverflow.com/questions/7073485/… может помочь, если вы используете муравей и затмение.
OuuGiii
Вопрос о Notepad ++, но не об Eclipse.
получил
60

Не волнуйся, я понял это.

Это на самом деле просто - вам нужно установить ОБА JRE / JDK с той же версией.

JRE 6 -> JDK 6

JRE 7 -> JDK 7

И так далее.

Erjan
источник
29
Java 7 может обрабатывать 6 без проблем тоже.
damienix
@damienix Возможно, вы захотите указать, что JRE Java 7 может без проблем обрабатывать скомпилированный класс Java 6, иначе ваше утверждение приведет к путанице.
Frontear
43

Эта ошибка означает, что вы пытаетесь загрузить файл «класса» Java, который был скомпилирован с более новой версией Java, чем вы установили.

Например, ваш .classфайл мог быть скомпилирован для JDK 7, и вы пытаетесь запустить его с JDK 6.

Таким образом, решение заключается в том, чтобы:

  • Обновите среду выполнения Java или
  • Перекомпилируйте класс, если у вас есть источник, используя ваш локальный компилятор Java (если он у вас есть).

    javac FileName.java

Для разработчиков это может произойти, если другой разработчик зарегистрирует файл .class, и у него будет более новая версия Java, чем у вас!

Брэд Паркс
источник
22

Вы пытаетесь запустить свою программу с версией Java, которая не поддерживает версию, в которой был скомпилирован код. Таким образом, в основном вы должны скомпилировать свой код с более высокой версией и попытаться запустить его с использованием более низкой версии.

Как вы получаете

Unsupported major.minor version 51.0

и версия 51.0 соответствует J2SE 7, вы, скорее всего, скомпилировали свой код в Java 7 и пытаетесь запустить его, используя более низкую версию. Проверьте, что java -versionотображается. Это должна быть версия Java 7. Если нет, внесите соответствующие изменения в PATH / JAVA_HOME. Или вы можете скомпилировать с той же версией, которую вы пытаетесь запустить код. Если конфигурации сбивают с толку, вы всегда можете указать абсолютный путь /home/user/jdk1.7.0_11/bin/javacи /home/user/jdk1.7.0_11/bin/java.

Аникет Тхакур
источник
18

У меня была похожая ситуация на Mac, и у меня работал следующий процесс:

В терминале введите

vi ~/.profile

Затем добавьте эту строку в файл и сохраните

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk<version>.jdk/Contents/Home

где версия на вашем компьютере, например 1.7.0_25.

Выйдите из редактора, затем введите следующую команду, чтобы он вступил в силу

source ~/.profile 

Затем введите java -version, чтобы проверить результат

java -version 

Что такое .profileфайл?

Файл .profile - это скрытый файл. Это необязательный файл, который сообщает системе, какие команды следует запускать, когда пользователь, чей файл профиля входит в систему. Например, если мое имя пользователя - bruno и в / Users / bruno / есть файл .profile, все его содержимое будет выполнен во время процедуры входа в систему.

Источник: http://computers.tutsplus.com/tutorials/speed-up-your-terminal-workflow-with-command-aliases-and-profile--mac-30515

Тони
источник
16

В меню Eclipse Window -> Preferences -> Java -> Compiler отметьте также «Настройка параметров проекта».

Если у вас все еще есть ошибка с той же версией Java: попробуйте удалить папку сборки вашего проекта вручную. Затем перезапустите Eclipse.

Андреас Л.
источник
14

Вы можете иметь некоторую библиотеку JAR, скомпилированную в Java 7, и у вас есть только Java 6 в качестве Java Runtime. Это может произойти с некоторыми новыми библиотеками.

Rio
источник
14

Наиболее распространенной проблемой является неправильная конфигурация вашей JAVA_HOMEпеременной, которая должна указывать на правильную библиотеку Java Development Kit, если вы установили несколько.

Чтобы узнать, где находится папка Java SDK, выполните следующие команды:

jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'

Debian / Ubuntu

Чтобы проверить, какой java (openjdk) вы установили, проверьте через:

dpkg -l "openjdk*" | grep ^i

или:

update-java-alternatives -l

Чтобы изменить это, используйте:

update-alternatives --config java

Префикс с, sudoесли требуется.

выбрать альтернативную версию Java.

Или проверьте, какие доступны для установки:

apt-cache search ^openjdk

Префикс с, sudoесли требуется.

Затем вы можете установить, например:

apt-get install openjdk-7-jre

Префикс с, sudoесли требуется.

Fedora, Oracle Linux, Red Hat

Установите / обновите соответствующий пакет через:

yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel

java-1.7.0-openjdkПакет содержит только Java Runtime Environment. Если вы хотите разрабатывать программы на Java, установите java-1.7.0-openjdk-develпакет.

BSD

В коллекции портов FreeBSD есть пакет OpenJDK 7, называемый openjdk7, который, вероятно, необходимо перенастроить.

Смотрите: OpenJDK вики-страница .

Windows

Просто установите соответствующую библиотеку Java SE Development Kit с сайта Oracle или установите

Дженкинс

Если у вас возникла эта проблема с Дженкинсом, смотрите:

Однако выбор правильной версии Java (более новой) с update-alternativesдолжен работать.

kenorb
источник
Этот ответ работал для меня, когда я пытался использовать spark2-shell на хосте после добавления сервиса spark в кластер с cloudera.
Alter
12

Я столкнулся с той же проблемой, когда работал над сценарием Ant для создания своего приложения.

Я использую Eclipse для разработки приложений и изменил версию компилятора в свойствах сборки проекта. Но это не сработало для меня. Затем я узнал, что могу предоставить версию компилятора в скрипте Ant.

Я изменил скрипт Ant в разделе, где он компилирует файлы Java.

<target name="build-java" depends="prepare-build">
    <echo message="Compiling java files"/>
    <javac ....
           target="1.5"...
    </javac>
</target>

Это сработало для меня, чтобы решить нерешенную главную незначительную проблему.

Мандар Пандит
источник
12

Когда я установил JDK 1.7, проблема была решена.

user3168034
источник
12

Я получил ту же проблему с проектом, написанным в 1.7, и попытался выполнить в 1.6.

Мое решение в Eclipse:

  • Щелкните правой кнопкой мыши на свойства вашего проекта -> Путь сборки Java -> Библиотеки

  • Выберите системную библиотеку JRE, нажмите « Правка» справа и выберите целевой JRE.

  • Теперь перейдите к компилятору Java слева и измените уровень соответствия компилятора на свою цель.

Это сработало для меня.

Бен
источник
11

Как ответили в другом месте несколько человек, программа Java работает на более старой версии Java, чем та, для которой она была скомпилирована. Это должно быть "кросс-компилировано" для обратной совместимости. Другими словами, существует несоответствие между исходной и целевой версиями Java.

Изменение параметров в меню Eclipse не отвечает оригинальному постеру, который сказал, что не использует Eclipse. В OpenJDK javac версии 1.7 вы можете кросс-компилировать для 1.6, если вы используете параметры -sourceи -target, плюс, предоставить файл rt.jar целевой версии (то есть более старой) во время компиляции. Если вы на самом деле устанавливаете 1.6 JRE, вы можете указать на его установку (например, /usr/lib/jvm/java-6-openjdk-i386/jre/lib/rt.jar в Ubuntu, / usr / jdk / jdk1. 6.0_60 / jre / lib / rt.jar в SunOS, видимо. Извините, я не знаю, где он находится в системе Windows). Вот так:

javac -source 1.6 -target 1.6 -bootclasspath /usr/lib/jvm/java-6-openjdk-i386/jre/lib/rt.jar HelloWorld.java

Похоже, вы можете просто скачать rt.jar из Интернета и указать на него. Это не слишком элегантно, хотя:

javac -source 1.6 -target 1.6 -bootclasspath ./rt.jar HelloWorld.java
Мейс Ояла
источник
10

Основываясь на этом...

J2SE 8 = 52
J2SE 7 = 51
J2SE 6.0 = 50
J2SE 5.0 = 49
JDK 1.4 = 48
JDK 1.3 = 47
JDK 1.2 = 46
JDK 1.1 = 45

В Eclipse щелкните правой кнопкой мыши проект в проводнике пакетов:

Путь сборки -> Настройка пути сборки

Под:

Путь сборки Java -> Библиотеки -> Добавить библиотеку -> Системная библиотека JRE -> Установленные JRE -> Поиск .

Добавьте требуемую JRE, выбрав библиотеку в списке, доступном после завершения поиска.

Адит Я.
источник
10
  • Если вы используете Maven, установите уровень компиляции Java. Откройте командную строку и напишите java -versionдля своего уровня компиляции:

    Введите описание изображения здесь

  • Если вы используете IntelliJ IDEA, выберите проект → ФайлНастройкиРазвертывание выполнения сборкиКомпиляторКомпилятор Java . Затем измените байт-код на 1.7, как на этом изображении:

    Введите описание изображения здесь

ethemsulan
источник
Мне нужно было сделать maven чистую установку после смены пом.
Джо Бориско
10

Если вы столкнулись с этой проблемой при использовании Maven , вы можете скомпилировать код с помощью подключаемого модуля Maven Compiler .

 <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
       .....

UPDATE: установить sourceи targetв 1.8, если вы используете JDK 8.

Тамме Говда
источник
фрагмент кода о том, как использовать плагин для кросс-компиляции, был бы очень хорош вместо посещения / открытия ссылки
coding_idiot
8

У меня было то же сообщение об ошибке при запуске Ant из Eclipse, но другие решения, упомянутые здесь, не решили мою проблему. Самое смешное, что запуск Ant из командной строки Windows работал нормально, поэтому это должно было быть проблемой конфигурации в Eclipse.

Оказалось, что в Eclipse вы можете указать среду, в которой должен работать Ant, и это было задано как JRE вместо JDK.

  • Перейти к: Выполнить -> Внешние инструменты -> Конфигурации внешних инструментов ...
  • Выберите Ant build.xml для вашего проекта (если у вас есть несколько проектов)
  • Активировать вкладку «JRE»
  • Здесь был выбран «Отдельный JRE: JRE6». Когда я изменил это на JDK из серии 1.6 или 1.7, ошибка исчезла.
ckielstra
источник
8

Как мне это исправить?

Эта ошибка означает, что JRE, которая используется для выполнения кода вашего класса, не распознает используемую версию Java. Обычно потому, что версия Java, сгенерировавшая ваш файл класса (то есть скомпилированная), новее.

Чтобы исправить это, вы можете

a) Скомпилируйте исходные коды Java с той же или более старой версией компилятора Java, который будет использоваться для его запуска. т.е. установить соответствующий JDK.

б) Скомпилируйте исходные коды Java с более новой версией компилятора Java, но в режиме совместимости. т.е. использовать -targetпараметр.

c) Запустите ваши скомпилированные классы в JRE той же или более новой версии, что и JDK, использованный для компиляции классов.

Вы можете проверить версии, которые вы используете в настоящее время javac -versionдля компилятора и java -versionдля времени выполнения.

Должен ли я установить JDK и настроить переменную PATH для JDK вместо JRE?

Разумеется, для компиляции установите и настройте нужный JDK.

Для времени выполнения вы можете использовать тот, который поставляется с JDK или автономным JRE, но, тем не менее, убедитесь, что вы установили правильные версии и настроили свой PATH так, чтобы не было никаких неожиданностей.

В чем разница между переменной PATH в JRE или JDK?

Переменная среды PATH сообщает командной оболочке, где искать введенную вами команду. Когда вы печатаете java, интерпретатор командной оболочки просматривает все местоположения, указанные в PATHпеременной, слева направо, чтобы найти подходящий javaисполняемый файл для выполнения. Если у вас установлено несколько версий Java - т.е.java исполняемый файл в нескольких местах, указанных в переменной PATH, то первая, с которой сталкиваются при переходе слева направо, будет той, которая выполняется.

Команда компилятора есть javacи только поставляется с JDK. Команда времени выполнения есть javaи поставляется с JDK и находится в JRE.

Вполне вероятно, что у вас установлена ​​одна версия (51.0 = Java 7) javac, и у вас также установлена ​​та же версия java, но другая предыдущая версия javaпоявляется ранее в PATH и поэтому вызывается вместо той, которую вы ожидаете ,

Vihung
источник
7

Вы использовали более высокую версию JDK для компиляции и пытались запустить ее из более низкой версии JDK / JRE .

Чтобы проверить это, посмотрите информацию о версии:

javac -version

java -version

Они будут другими, и у javac будет более высокий номер версии.

Чтобы обойти это, запустите с использованием Java из версии JDK или, если у вас есть более новая версия JRE / JDK, которая также будет работать.

which javacскажу вам местоположение, например /usr/bin/javac,. Просто бегите напрямую используя /usr/bin/java <program>.

ИЛИ вы можете установить переменную среды как постоянное решение.

L Lawliet
источник
6

Возникла эта проблема, когда я вернулся к Java 6 и попытался запустить классы, ранее скомпилированные с Java 7. Что мне сработало, так это Preferences> java> compiler -> установите уровень соответствия 1.6 и крайне важно «настроить параметры проекта».

user3534268
источник
6

Сегодня это сообщение об ошибке появилось в нашем Tomcat 7 на Ubuntu 12.04.2 LTS (Precise Pangolin):

/var/log/tomcat7/localhost.2014-04-08.log:
8 апреля 2014 г. 9:00:55 org.apache.catalina.core.StandardContext filterStart
SEVERE: запуск фильтра исключений struts2
java.lang.UnsupportedClassVersionError: контроллер / ReqAccept: не поддерживается Major.minor версии 51.0 (невозможно загрузить контроллер класса. ReqAccept)

Приложение Struts скомпилировано с Java 7.

Оказалось, кто-то использует «службу tomcat [stop / start]» для перезапуска Tomcat 7,

$ ps -ef | grep java
tomcat7 31783 1 32 20:13? 00:00:03 / usr / lib / jvm / default-java / bin / java ...
$ / usr / lib / jvm / default-java / bin / java -version
Java-версия "1.6.0_27"

Что приводит к ошибке «Unsupported major.minor version 51.0».

Когда мы использовали «/etc/init.d/tomcat7 [stop / start]» для перезапуска Tomcat 7, проблема была решена.

$ ps -ef | grep java
tomcat7 31886 1 80 20:24? 00:00:10 /usr/local/java/jdk1.7.0_15/bin/java
$ /usr/local/java/jdk1.7.0_15/bin/java -version
java версия "1.7.0_15"

oraclesoon
источник
6

Я решил это. Я побежал:

JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386

Ошибка вводит в заблуждение Unsupported major.minor version 51.0. Это создает впечатление, что версия 51 (Java 7) не поддерживается. И мы должны использовать Java 6.

Ошибка должна была быть:

Текущая версия Java, 50, не поддерживается. Вместо этого используйте версию 7 Java (51: 0 и выше).

Сиддхарт
источник
6

Ваш Java-файл скомпилирован с другой версией (более высокая версия компилятора), чем версия (более низкая версия времени выполнения), с которой вы пытаетесь его запустить.

Понятно, что классы, скомпилированные с более низкими версиями, должны работать в более поздних версиях. Но обратное (скомпилированное с более высокой версией компилятора и пытающееся запустить его с более низкой версией времени исполнения) иногда совершенно невозможно.

Следовательно, вы видите эту ошибку при попытке выполнить вашу программу. Неподдерживаемая версия major.minor xx

В: Я создал приложение в Java 7, но когда мои пользователи пытаются запустить его, они получают ошибку Unsupported major.minor version 51.0. Что это значит и что я могу с этим сделать?

A: Если вы компилируете приложение, используя javac в Java 7, результирующие файлы классов будут иметь номер версии 51.0. Версии Java до 7 не распознают этот номер, поэтому вашим пользователям придется выполнить обновление до Java 7 до запуска вашего приложения. Если вы не используете API-интерфейсы Java 7, вы можете попытаться скомпилировать ваше приложение, используя javac -target 1.6 для создания 1.6-совместимого файла классов. Если ваше приложение развернуто с помощью веб-запуска, вы можете указать минимальную требуемую версию. Для получения дополнительной информации см. Документацию по Java Web Start и JNLP здесь. Эта проблема исчезнет, ​​как только мы запустим автоматическое обновление до Java 7 для конечных пользователей, которые в настоящее время имеют Java 6 на своих рабочих столах. Сроки для этого еще не определены, мы хотим дать разработчикам время для решения любых проблем между их кодом и JDK 7 в первую очередь.

(Источник: oracle.com .)

Manohar
источник
5

О, Mac OS XI смогла решить эту проблему, установив переменную JAVA_HOME:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home
TomTom
источник
4

Сначала давайте разберемся с основами ...

JRE - это компонент в NetBeans / Eclipse / standalone, который предоставит вам библиотеки, JVM, плагины Java и веб-запуск Java. Обратите внимание, что он не предоставляет компиляторы или отладчики.

JDK - это расширенный набор JRE вместе с компиляторами и отладчиками.

Поэтому, когда у вас есть библиотека по умолчанию в виде JRE вместо JDK, вам будет приятно импортировать материал, но он не будет компилироваться.

Вместо этого установите ваш путь к JDK (я использую NetBeans, и я установил их с помощью netbeans.conf в netbeans / etc / netbeans.conf и изменил путь).

Creative_Cimmons
источник
3

У меня была проблема, из-за которой мне приходилось запускать компиляцию Maven для моего проекта из командной строки, чтобы запускать мои модульные тесты; если я внес изменение в тестовый класс и позволил Eclipse автоматически его перекомпилировать, то я получил ошибку «Unsupported major.minor version 51.0».

У меня установлены JDK6 и JDK7, но все мои настройки JRE указывали на 1.6, как в pom, так и на странице свойств проекта в Eclipse. Никакое количество проекта обновления Maven и / или обновления не решило это.

Наконец я попытался закрыть проект и снова открыть его, и это, казалось, исправило это! НТН

Мэтью Мудрый
источник
3

Вы скомпилировали свой класс Java с JDK 7 и пытаетесь запустить тот же класс на JDK 6.

Сагар Варпе
источник
3
  • Установите JDK 7.0.55 и установите Java для Eclipse для JDK 7.0.55.
  • Создайте проект с помощью JDK 7.0.55, настроив путь сборки JDK 7.0.55.
  • Установите компилятор в Eclipse для JDK 7.0.55 с помощью меню Windows -> Настройки -> Java -> Компилятор - выберите 1.7.
siddmuk2005
источник
3

Ответ для проблемы:

Исключение в потоке "main" java.lang.UnsupportedClassVersionError: edu / stevens / cs549 / dhts / main / LocalContext: неподдерживаемая major.minor версия 52.0

У меня была такая же проблема. Для тех, кто испытывал эту проблему в экземплярах AWS ec2 и каким-то образом перенаправился сюда на этот вопрос. Я отвечаю за них и хотел бы поделиться тем, как я это сделал. У меня были проблемы, потому что экземпляры Amazon EC2 работали с Java версии 1.7, и, возможно, мой проект был несовместим с ним, потому что я использовал Maven, и он был предварительно настроен для Java 1.8. Поэтому я установил новую версию Java:

sudo yum -y install java-1.8.0

И тогда важный шаг - удалить старую версию:

sudo yum remove java-1.7.0-openjdk

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

Сиддхарт Чоудхари
источник