Исправление ошибки Java 11 в Gradle Plugin Android Studio
Полное руководство по устранению ошибок Java 11 в Android Gradle Plugin. Настройте gradle.properties, переменные окружения и IDE для сборки Jetpack Compose.
Я получаю ошибку при попытке запустить проект Android Jetpack Compose в самой последней версии Android Studio. Сообщение об ошибке выглядит так:
> Failed to apply plugin 'com.android.internal.application'.
> Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.
You can try some of the following options:
- changing the IDE settings.
- changing the JAVA_HOME environment variable.
- changing `org.gradle.java.home` in `gradle.properties`.
Я уже скачал Java 11 и настроил его в проекте, добавив следующую строку в gradle.properties:
org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk-11.0.10.jdk/Contents/Home
Также проверил, что JAVA_HOME указывает на Java 11:
java 11.0.10 2021-01-19 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.10+8-LTS-162)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.10+8-LTS-162, mixed mode)
Конфигурация моего проекта включает:
- Версия Android Studio: [изображение с версией]
- Версия Gradle wrapper: 6.8.2
- Android Gradle plugin: 7.0.0‑alpha13
- Версия Kotlin: 1.4.31
Несмотря на эти настройки, я всё ещё получаю ошибку о версии Java. Как можно решить эту проблему и успешно запустить мой проект Jetpack Compose?
Я также включил конфигурацию моего build.gradle для справки:
[Полный контент build.gradle]
Android Gradle plugin 7.0.0‑alpha13 требует Java 11 для работы, и несмотря на ваши попытки настройки, проблема сохраняется, потому что существует несколько мест, где необходимо указать версию Java. Ошибка обычно возникает, когда Android Gradle Plugin или сам Gradle wrapper настроены на использование другой версии Java, чем ожидается.
Содержание
- Понимание требования Java 11
- Полные методы настройки
- Проблемы настройки на Mac
- Конфигурация Gradle Wrapper
- Настройки IDE Android Studio
- Шаги устранения неполадок
- Финальная проверка
Понимание требования Java 11
Android Gradle Plugin 7.0.0 и более поздние версии требуют Java 11 для корректной работы. Это значительное изменение по сравнению с предыдущими версиями, которые поддерживали Java 8. Согласно официальным заметкам о выпуске Google, при использовании Android Gradle plugin 7.0 для сборки вашего приложения JDK 11 теперь обязателен для запуска Gradle.
Это требование затрагивает три разных аспекта вашего процесса сборки:
- Время выполнения JDK – версия Java, используемая демоном Gradle для выполнения скриптов сборки
- Компиляционный JDK – версия Java, используемая для компиляции кода Android-приложения
- Совместимость Android SDK – версия Java, которую ожидают инструменты Android
Ваша текущая конфигурация фокусируется на времени выполнения JDK (org.gradle.java.home), но могут возникнуть проблемы в других областях настройки.
Полные методы настройки
1. Конфигурация gradle.properties
Хотя вы уже установили org.gradle.java.home, убедитесь, что это находится в файле gradle.properties уровня проекта (а не уровня модуля), и проверьте, что путь точно соответствует вашей установке Java 11:
# Установить JDK для Gradle
org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk-11.0.10.jdk/Contents/Home
# Опционально: оптимизации производительности Gradle
org.gradle.jvmargs=-Xmx1536M -XX:+UseParallelGC
2. Конфигурация через командную строку
Если подход с gradle.properties не работает, вы можете указать версию Java напрямую при запуске команд Gradle:
# Для Mac/Linux
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.10.jdk/Contents/Home
# Затем запустить Gradle
./gradlew clean build
Или использовать Java home напрямую:
./gradlew -Dorg.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk-11.0.10.jdk/Contents/Home clean build
3. Переменные окружения
Убедитесь, что переменные окружения настроены правильно. Проверьте профиль оболочки (~/.zshrc или ~/.bash_profile для Mac):
echo $JAVA_HOME
which java
java -version
Проблемы настройки на Mac
Проверка установки Java
На Mac установки Java могут быть запутанными. Проверьте вашу установку:
# Список всех установок Java
/usr/libexec/java_home -V
# Должно показать что-то вроде:
# Matching Java Virtual Machines (2):
# 11.0.10 (x86_64) "Oracle Corporation" - "Java SE 11.0.10" /Library/Java/JavaVirtualMachines/jdk-11.0.10.jdk/Contents/Home
Проблемы с путём
Системы Mac часто имеют несколько установок Java. Убедитесь, что вы используете правильный путь. Если вы установили Java через Homebrew:
# Путь к Java 11 от Homebrew
export JAVA_HOME=$(brew --prefix openjdk@11)
Конфигурация Gradle Wrapper
Версия Gradle wrapper (6.8.2) совместима с Java 11, но сам дистрибутив wrapper может потребовать обновления или перенастройки. Проверьте ваш скрипт gradlew и gradle-wrapper.properties:
# gradle-wrapper.properties
distributionUrl=https://services.gradle.org/distributions/gradle-6.8.2-bin.zip
Если проблемы продолжаются, рассмотрите обновление до более новой версии Gradle, которая лучше протестирована с Java 11:
distributionUrl=https://services.gradle.org/distributions/gradle-7.0.2-bin.zip
Затем пересоздайте wrapper:
./gradlew wrapper --gradle-version=7.0.2
Настройки IDE Android Studio
Конфигурация JDK для Gradle
Согласно решениям на Stack Overflow, вам необходимо настроить Android Studio на использование правильного JDK:
- Перейдите в File > Settings > Build, Execution, Deployment > Build Tools > Gradle
- В выпадающем списке Gradle JDK выберите JDK 11 (не встроенный)
- Если JDK 11 не отображается, нажмите Add JDK и укажите путь к вашей установке Java 11
Настройки структуры проекта
Убедитесь, что структура проекта корректна. Иногда Android Studio может кэшировать неверные настройки. Попробуйте:
- File > Invalidate Caches / Restart
- Выберите Invalidate and Restart
Шаги устранения неполадок
Пошаговое решение
-
Проверьте установку Java:
bashjava -version javac -version
-
Проверьте все файлы конфигурации:
gradle.propertiesуровня проектаgradle.propertiesуровня пользователя (~/.gradle/gradle.properties)- Переменные окружения
- Настройки Android Studio
-
Очистите и пересоберите:
bash./gradlew clean ./gradlew --stop # Остановить демона Gradle ./gradlew build -
Проверьте наличие конфликтующих настроек:
Ищите дублирующиеorg.gradle.java.homeв разных файлах конфигурации -
Тестируйте с чистым проектом:
Создайте новый проект Jetpack Compose и примените вашу конфигурацию Java 11, чтобы изолировать проблему
Частые ошибки
- Чувствительность к регистру пути: файловые системы Mac могут быть чувствительными к регистру
- Отсутствие инструментов Java: убедитесь, что доступны как
java, так иjavac - Кэш IDE: Android Studio может кэшировать неверные настройки версии Java
- Модульные vs проектные настройки: настройки в
gradle.propertiesуровня модуля могут не влиять на процесс сборки
Финальная проверка
После применения всех настроек проверьте вашу конфигурацию, запустив:
./gradlew build --info
Флаг --info покажет подробную информацию о том, какая версия Java используется во время сборки. Ищите вывод вроде:
> Configure project :
Using java home at: /Library/Java/JavaVirtualMachines/jdk-11.0.10.jdk/Contents/Home
Если проблемы продолжаются, рассмотрите проверку конкретной конфигурации Jetpack Compose, поскольку некоторые ранние версии Compose имели дополнительные требования совместимости, которые могут конфликтовать с настройками Java 11.
Источники
- Android Gradle Plugin 7.0.0 Release Notes – Требование Java 11
- Stack Overflow: Android Gradle plugin requires Java 11 to run
- GitHub: Конфигурация версии Java для Android Gradle plugin
- Microsoft App Center: Требование Java 17 для Android Gradle plugin
- Repeato: Решение ошибки Java 11 в Android Studio
Заключение
Ошибка версии Java с Android Gradle plugin 7.0.0‑alpha13 обычно возникает из‑за неполной настройки в нескольких системах. Чтобы решить эту проблему:
- Настройте Java 11 во всех местах:
gradle.properties, переменные окружения и настройки Android Studio - Проверьте путь установки Java на Mac, убедившись, что доступны как
java, так иjavac - Обновите Gradle wrapper до версии, лучше протестированной с Java 11, если необходимо
- Очистите кэши Android Studio и перезапустите IDE после изменений настроек
- Проверьте чистые сборки с флагом
--info, чтобы убедиться, что Java 11 обнаружена
Самый надёжный подход – настроить версию Java во всех трёх местах: gradle.properties, переменные окружения и настройки IDE, затем очистить кэши и перезапустить. Такой комплексный подход обеспечивает согласованность во всех средах сборки и конфигурациях IDE.