Этот вопрос должен быть актуален для всех, кто интересуется взаимосвязью между версиями стандартных объектов Java и версией JDK, а также тем, как откатить вашу версию Java.
Итак: как мне откатить версию моего объекта java.util.Map? Я уверен, что мне придется откатить и другие объекты.
Я пытаюсь следовать этим инструкциям (https://cloud.google.com/solutions/mobile/mobile-firebase-app-engine-flexible ), и когда я пытаюсь заставить maven запустить мой локальный сервер или выполнить развертывание в механизме облачных приложений, я вижу такие ошибки:
[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile
(default-compile) on project backend: Compilation failure [ERROR]
C:\Users\bensw\AndroidStudioProjects\firebase-appengine-backend\src\main\java\com\google\cloud\solutions\flexenv\common\LogEntry.java:[23,17]
cannot access java.util.Map [ERROR] bad class file:
/modules/java.base/java/util/Map.class [ERROR] class file has
wrong version 55.0, should be 53.0 [ERROR] Please remove or make
sure it appears in the correct subdirectory of the classpath.
Я нашел несколько сообщений здесь по этой теме, но я не уверен, как применить эти ответы к этой ситуации. Я не использую IntelliJ и не знаю, какой SDK мне нужно изменить. Файл класса имеет неправильную версию 52.0, должна быть 50.0
Я попытался вернуться к Java 6, основываясь на предположении, что Java 6 имеет правильную версию Map.class, но, к моему удивлению, это не сработало.
Спасибо, Бен
Эта ошибка означает, что ваша версия JRE среды выполнения отличается и несовместима с версией JDK, которую вы используете для создания этого файла JAR.
Эта ошибка выглядит так, как будто вы смешиваете части двух разных версий JDK, используя JVM из более старой версии с путем начальной загрузки (библиотеки времени выполнения) из более новой. Без понятия, как это произойдет. Как вы установили/настроили Java?
Как я установил Java, немного туманно. Я думаю, что у меня могло быть любое количество JRE. Когда мой компьютер просит меня обновить Java, я не обращаю внимания, согласен я на это или нет. Я знаю, что у меня есть Open JDK типа OpenJDK-11.0.2. Я включил это в свой путь. С тех пор я удалил две JRE, которые у меня были от Oracle версии 6, у меня также была одна версия 8, которые все были удалены. Мне также интересно, не связано ли это с «app-engine-java», который поставляется с Google Cloud. Я не могу понять, как откатить версию этой штуки.
Также: я почему-то не могу найти старые JDK. Даже если бы я мог найти более старый JDK, я не уверен, как я мог бы сопоставить версию JDK с этой системой нумерации версий 55.0 или 53.0. Я обратился за помощью в техподдержку Google, якобы они ответят мне в течение рабочего дня.




Попробуйте использовать Java 8 вместо 11.
sudo apt install openjdk-8-jdk
sudo update-alternatives --config java
sudo update-alternatives --config javac
JAVA_HOME указывает на правильный JDK в вашем сеансе:
export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")
Дай мне знать, если это работает.
Не совсем понятно, что вы спрашиваете..