Вопрос или проблема
Я пытаюсь настроить среду для создания наброска приложения на Android. Чтобы установить Android SDK платформу, выполните эту команду
$HOME/Android/sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-34" "build-tools;34.0.0"
Несмотря на то, что версия Java недавняя, возникает ошибка:
Error: LinkageError occurred while loading main class com.android.sdklib.tool.sdkmanager.SdkManagerCli
java.lang.UnsupportedClassVersionError: com/android/sdklib/tool/sdkmanager/SdkManagerCli был скомпилирован более новой версией Java Runtime (версия файла класса 61.0), эта версия Java Runtime распознает файлы классов до версии 55.0
Даже проверка версии Java по умолчанию на сервере с помощью этой команды
sudo update-alternatives –config java
и вот результат
Есть 2 варианта для альтернативы java (предоставляет /usr/bin/java).
Выбор Путь Приоритет Статус
------------------------------------------------------------
* 0 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1711 авто режим
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 ручной режим
2 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1711 ручной режим
Нажмите <enter>, чтобы оставить текущий выбор[*], или введите номер выбора:
что показывает, что версия Java по умолчанию на этом сервере — 17…
Эта проблема не позволяет мне установить SDK и Cordova.
Ответ или решение
Для решения задачи установки Android SDK и создания среды для разработки приложения на платформе Android необходимо понимать, как обеспечить совместимость версий программного обеспечения, таких как Java Runtime и Android SDK. Давайте рассмотрим эту проблему последовательно.
Теория
Проблема несовместимости версий: Одной из распространенных причин ошибок при установке или выполнении программного кода является несовместимость версий использованных инструментов и компонентов. В вашем случае это связано с версиями Java Runtime и SDK Manager, которые вы пытаетесь использовать. Ошибка UnsupportedClassVersionError
указывает на то, что класс был скомпилирован с использованием более новой версии Java, чем та, которая в настоящее время активна на вашем сервере. В Java версии классов определяются с помощью "class file version", и ваша текущая версия JDK не соответствует версии, используемой для компиляции SDK Manager.
Понимание версий Java: В Java каждая версия соответствует определенной версии классов:
- Версия 55.0 соответствует Java 11
- Версия 61.0 соответствует Java 17
Таким образом, чтобы запускать программное обеспечение, которое было скомпилировано с использованием Java 17, необходимо установить и настроить Java Runtime не ниже этой версии.
Пример
Вы сообщаете, что у вас установлены несколько версий Java, и версией по умолчанию является Java 17, что, казалось бы, удовлетворяет требованиям SDK Manager. Однако ошибка свидетельствует о том, что сервер использует Java Runtime более старой версии (возможно Java 11), при выполнении данной команды.
Применение
Пошаговое руководство для решения проблемы:
-
Проверка текущей версии Java:
Выполните следующую команду для проверки используемой версии Java:java -version
Это должно показать, какую версию Java фактически использует терминал. Убедитесь, что версия соответствует Java 17.
-
Настройка альтернатив для Java:
Используйте командуsudo update-alternatives --config java
для выбора нужной версии Java, если это необходимо. Убедитесь, что версия Java 17 выбрана и активна. -
Настройка переменной окружения JAVA_HOME:
Установите правильное значение для переменной окружения JAVA_HOME. Это может быть сделано, добавив следующую строку в файл.bashrc
или.bash_profile
:export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
После этого выполните команду
source ~/.bashrc
или перезапустите терминал для применения изменений. -
Обновление инструмента SDK Manager:
Убедитесь, что ваш инструмент SDK Manager может корректно работать с установленной версией Java. Если проблема сохраняется, проверьте обновления для SDK Manager, загрузив последнюю версию с официального сайта Android Developer. -
Проверка и устранение зависимости других переменных окружения:
Проверьте правильно ли установлены пути до Android SDK и Java в переменных PATH и ANDROID_HOME. Например:export PATH=$PATH:$HOME/Android/sdk/cmdline-tools/latest/bin export ANDROID_HOME=$HOME/Android/sdk
-
Проверка установок и зависимостей:
Убедитесь, что все установленные версии Android инструментария и Java загрузились корректно. Для стабильности работы рекомендуется использовать одинаковые версии SDK и сборочных инструментов, чтобы избежать возможных конфликтов.
Эти шаги помогут устранить имеющиеся ошибки и позволят корректно установить и использовать Android SDK с Java 17. Если проблема все еще возникает, стоит провести анализ с помощью логов и сторонних проверок совместимости компонентов. Это может включать детальный просмотр изменений в документации Android и Java или перепроверку конфигурационных файлов.
Заключение
Взаимодействие различных версий инструментов разработки требует внимательного подхода для поддержания совместимости и стабильности. Таким образом, корректная настройка и проверка всех переменных окружения и версии инструментов является ключевым шагом в успешной разработке Android приложений.