Вопрос или проблема
С тех пор как обновление вчера (да, обновление Linux), Eclipse отказывает мне в запуске даже самого простого helloworld:
был скомпилирован более новой версией Java Runtime (версия файла класса 53.0), эта версия Java Runtime распознает только версии файла класса до 52.0
Полный текст ошибки:
Ошибка: Произошла ошибка JNI, пожалуйста, проверьте вашу установку и попробуйте снова
Исключение в потоке "main" java.lang.UnsupportedClassVersionError: gitplayground/HelloWorld был скомпилирован более новой версией Java Runtime (версия файла класса 53.0), эта версия Java Runtime распознает только версии файла класса до 52.0
в java.lang.ClassLoader.defineClass1(Нативный метод)
в java.lang.ClassLoader.defineClass(ClassLoader.java:763)
в java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
в java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
в java.net.URLClassLoader.access$100(URLClassLoader.java:73)
в java.net.URLClassLoader$1.run(URLClassLoader.java:368)
в java.net.URLClassLoader$1.run(URLClassLoader.java:362)
в java.security.AccessController.doPrivileged(Нативный метод)
в java.net.URLClassLoader.findClass(URLClassLoader.java:361)
в java.lang.ClassLoader.loadClass(ClassLoader.java:424)
в sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
в java.lang.ClassLoader.loadClass(ClassLoader.java:357)
в sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)
Я попытался обновить JRE (и JDK):
- окно -> настройки -> java -> установленные JRE. Я мог проверить:
java-8-openjdk-amd64
(который сейчас) илиjava-11-openjdk-amd64
. - окно -> настройки -> java -> компилятор. Уровень совместимости компилятора установлен на 1.8 (он не знает java 11. Он знает java 9.)
- окно -> настройки -> java -> Установленные JRE -> Среда выполнения. При нажатии на
JavaSE-1.8
в левом списке, в правом появляются 2 варианта:java-8-openjdk-amd64
иjava-1.8-openjdk-amd64
. Первый отмечен. (Но я не думаю, что это имеет значение, потому что они должны быть одинаковыми.) - Я попытался обновить Eclipse. (Обновления не доступны)
Так что всё установлено на Java8. Почему ошибка всё ещё возникает?
- Я использую XUbuntu 18.04 сейчас (до обновления всё работало нормально)
- Я использую Eclipse Photon
- Я использую только стандартный API Java
- Я использую git и плагин git для Eclipse
Ранее я столкнулся с той же проблемой, когда скачал JDK 11 и пытался поиграться с java 11, и я пробовал другие комментарии тоже, но без успеха. Тем не менее, переход к Window
-> установленные JRE
и установка самой последней версии jdk решает мою проблему.
Мой прогноз заключается в том, что более новая версия java должна быть удалена для использования более ранней версии java, как я прочитал в Как мне узнать, какую версию JDK использует Eclipse?, комбинируя оба ответа, это, похоже, выглядит так:
На самом деле у Eclipse есть свой собственный компилятор. Вы можете разрабатывать приложения на java, используя только JRE и Eclipse
Вы все равно можете проверить/установить, какую версию JDK вы хотите использовать для компиляции. Если вы перейдете в Window->Preferences, затем нажмите “Java” в меню слева, а затем “Compiler”. Первое значение позволяет вам видеть, с какой версией JDK происходит компиляция.
Я знаю, что это не отвечает на ваш вопрос напрямую, так как JDK на самом деле не компилирует его, но надеюсь, это поможет!
Я только что нашел другой способ, который может решить проблему.
Вот где добавить совместимость для этого:
Добавьте jdk сюда:
И проблема решена.
Хотя вопрос довольно старый, перейдите в свойства проекта и перейдите в Java Compiler -> Настроить настройки рабочей среды …
Вам в основном нужно подтвердить, что уровень совместимости компилятора и используемый jdk одинаковы.
Вы не должны получать ошибку после внесения этого изменения.
Ответ или решение
Ошибка компиляции в Eclipse: причина и решение
Ваша проблема связана с тем, что версия классового файла, используемая в проекте, не поддерживается текущей версией Java Runtime Environment (JRE). Вы столкнулись с сообщением об ошибке, указывающим, что компилируемый файл был создан с использованием более новой версии JRE (классовый файл версии 53.0 для Java 9), в то время как ваша JRE распознает только версии до 52.0 (Java 8). Эта ситуация может возникнуть после обновления, которое могло изменить версию JRE или JDK, используемую в вашей среде разработки Eclipse.
Основные шаги для решения проблемы
-
Проверьте установленную версию JRE и JDK:
- Перейдите в меню: Window → Preferences → Java → Installed JREs. Убедитесь, что в этом списке отображается необходимая версия JDK (например, JDK 11). Если она отсутствует, вам нужно будет установить её.
-
Настройка уровня совместимости компилятора:
- В той же области меню, перейдите в Java → Compiler. Убедитесь, что уровни совместимости компилятора (Compiler compliance level) установлены на 11 (если используете JDK 11) или на нужную вам версию, которая совпадает с установленной JDK.
-
Обновление параметров проекта:
- Для каждого проекта в Eclipse проверьте его свойства: Project → Properties → Java Compiler. Настройте его на использование соответствующего уровня совместимости. Если необходимо, выберите опцию Use project specific settings и установите уровень совместимости, соответствующий вашей версии JDK.
-
Редактирование конфигурации рабочей среды:
- Если вы используете несколько проектов с разными конфигурациями JRE, убедитесь, что в настройках проекта (Project Properties) выбрана правильная JRE. Это можно сделать через Java Build Path настроек проекта и проверить, что там указана актуальная JDK.
-
Путь к JDK:
- Если у вас несколько установленных JDK, возможно, нужно изменить данный путь. Этот путь можно настроить в Window → Preferences → Java → Installed JREs → Execution Environments.
Обоснование решения
После выполнения вышеперечисленных шагов, ваша среда разработки должна начать корректно обрабатывать файлы с классами версии 53.0. Причиной возникновения проблемы могло стать неправильное обновление или сбой конфигурации Eclipse после обновления операционной системы (в вашем случае, XUbuntu).
Необходимо помнить, что Eclipse использует свой внутренний компилятор, который может отличаться от установленной версии JDK. Поэтому важно, чтобы уровень совместимости компилятора всегда соответствовал используемой версии JDK для успешной компиляции и запуска ваших Java приложений.
Заключение
Если после выполнения указанных шагов проблема сохраняется, рекомендуется переустановить JDK и Eclipse, чтобы устранить возможные ошибки конфигурации. Такие действия помогут убедиться, что ваша среда разработки полностью совместима с необходимыми версиями Java.