java.lang.UnsupportedClassVersionError, хотя java -version и javac -version совпадают - PullRequest
0 голосов
/ 16 июня 2019

В моем университете мы учимся писать RMI-приложения.Когда я впервые попытался запустить пример приложения в Eclipse 2019-03, я столкнулся с ошибкой: java.lang.UnsupportedClassVersionError. Я успешно запустил другие проекты (не RMI) без проблем.

Когда я запускаю

java -version

Я получаю:

openjdk version "11.0.3" 2019-04-16
OpenJDK Runtime Environment (build 11.0.3+7-Ubuntu-1ubuntu218.04.1)
OpenJDK 64-Bit Server VM (build 11.0.3+7-Ubuntu-1ubuntu218.04.1, mixed       mode, sharing)

и

javac -version

Я получаю:

javac 11.0.3

В моей системе установлены Java 8 и 11Ubuntu 18.04.При поиске решения проблемы я нашел следующий вопрос: Как исправить ошибку java.lang.UnsupportedClassVersionError: Неподдерживаемая версия major.minor

Изменение настроек уровня компиляции в Eclipseдо 1,8 сделал И изменение конкретных настроек проекта мне помогло, и я смог, наконец, запустить приложение без каких-либо ошибок.Это решение меня не удовлетворяет.

Когда я запускаю

update-alternatives --config java

и

update-alternatives --config javac

, в обоих случаях выбирается openjdk11.Я не понимаю, почему я получаю сообщение об ошибке, если я не изменяю настройки компилятора.

В одном из ответов предлагается неверно установить $ JAVA_HOME varable.Когда я запускаю:

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

Это действительно дает мне ответ

/usr/lib/jvm/java-8-openjdk-amd64/jre

Я пытался следовать этому руководству, чтобы изменить его на openjdk11: https://askubuntu.com/questions/175514/how-to-set-java-home-for-java Когда я сейчас запускаю

echo $JAVA_HOME

Я получаю:

/usr/lib/jvm/java-11-openjdk-amd64

, но когда я снова запускаю

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

, ответ остается прежним.

Я хочубыть в состоянии использовать мой openjdk 11 для компиляции и запуска кода без изменения настроек компилятора в Eclipse.У кого-нибудь была такая же проблема и совет для меня?Заранее спасибо!

Полная ошибка следующая:

java.lang.UnsupportedClassVersionError: chapter6/Counter has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0

1 Ответ

1 голос
/ 16 июня 2019

Файл / etc / alternatives игнорируется при работе внутри Eclipse.Вместо этого у вас есть отдельное определение того, какой JDK / JRE использовать.Это можно установить глобально в настройках Eclipse, по одному в свойствах проекта или даже в конфигурации отладки / запуска (для тестирования приложения в нескольких версиях Java).

...