Как исправить Java UnsupportedClassVersionError

Я несколько раз сталкивался с этой ошибкой, пытаясь освежить свою Java. Искал решения в Интернете, и большинство предложений заключалось в том, чтобы скомпилировать или запустить файл с аргументом флага/опции, чтобы указать правильную версию интерпретатора. Мой вопрос в том, есть ли более постоянное решение для этого? (я использую vscode. Думаю, есть что-то, что я могу добавить в свой файл settings.json в рабочей области, но что?)

Error: LinkageError occurred while loading main class com.example.demo.DemoApplication
        java.lang.UnsupportedClassVersionError: com/example/demo/DemoApplication has been compiled by a more recent version of the Java Runtime (class file version 59.65535), this version of the Java Runtime only recognizes class file versions up to 58.0

вот подробности моей версии

$ java --version
java 14.0.2 2020-07-14
Java(TM) SE Runtime Environment (build 14.0.2+12-46)
Java HotSpot(TM) 64-Bit Server VM (build 14.0.2+12-46, mixed mode, sharing)

Я бы не хотел использовать флаги всякий раз, когда я компилирую и запускаю java-файл из командной строки. Бонусные баллы для вас, если вы можете объяснить, почему эта проблема возникает в первую очередь? Когда я изучал Java, вам приходилось загружать и устанавливать JRE и JDK отдельно. Я могу понять ошибочную загрузку несовместимых версий, но теперь кажется, что JRE поставляется в комплекте с JDK. Как в таком случае могут быть несовместимые версии компилятора и интерпретатора?


person breadman0    schedule 08.11.2020    source источник
comment
Вам это помогает? stackoverflow.com/questions/55447687/   -  person nkrivenko    schedule 08.11.2020


Ответы (2)


Эта ошибка говорит вам о том, что ваш класс был скомпилирован с более высокой версией Java, чем версия, с которой вы пытаетесь работать. В частности, в этом случае вы скомпилировали свой класс с помощью Java 15 и пытаетесь запустить его с помощью Java 14.

В зависимости от вашей ситуации у вас есть два способа устранить ошибку: скомпилировать код с более ранней версией Java или запустить код на более новой версии Java.

Исправить через командную строку. Если вы готовы полностью перейти на более новый JDK, вам следует загрузить более новую версию и убедиться, что ваши переменные среды PATH и JAVA_HOME установлены правильно. Предполагая, что у вас есть Java 15 JRE, вы можете запустить свой код с помощью прилагаемой к нему команды java.

IntelliJ IDEA. Вы также можете контролировать версию Java, которую вы используете для компиляции и запуска в IntelliJ IDEA. Перейдите в раздел Файл > Структура проекта... > Настройки проекта > Проект и измените свой SDK проекта и уровень языка проекта. Затем запустите свой проект на более новой версии JRE: перейдите в раздел Выполнить -> Изменить конфигурации… и измените JRE на 15. Теперь, когда вы запускаете свой проект, он будет работать с Java 15 JRE.

person Lyudmyla    schedule 17.11.2020

java.lang.UnsupportedClassVersionError: com/example/demo/DemoApplication был скомпилирован более новой версией среды выполнения Java (версия файла класса 59.65535), эта версия среды выполнения Java распознает только версии файла класса до 58.0 Установите JDK тот же, когда вы компилируете и запускаете проект:

То есть ваш файл был скомпилирован JDK15, но текущая среда выполнения, которая также установлена ​​на вашем компьютере, — JDK14. Несоответствие версии сборки и компиляции jdk вызвало эту ошибку.

Есть две важные конфигурации для правильной настройки вашей среды и проекта: java.configuration.runtimes и java.home. Первый определяет параметры среды выполнения вашего проекта; последний указывает среду выполнения вашего языкового сервера.

Вы установили JDK14, установите два вышеуказанных параметра, чтобы использовать его, чтобы решить эту ошибку.

"java.home": "\PATH TO JDK14\",
"java.configuration.runtimes": [
    {
        "name": "JavaSE-14",
        "path": "\PATH TO JDK14\",
        "sources": "\PATH TO JDK14\lib\src.zip",
        "javadoc": "https://docs.oracle.com/en/java/javase/14/docs/api",
        "default": true
    },      
],

Очистите Java Language Server Worspace и перезагрузите окно в VS Code, затем снова запустите.

Дополнительную информацию о java.configuration.runtimes и java.home см. в разделе Настройка JDK .

person Molly Wang-MSFT    schedule 09.11.2020