Другое

Исправление ошибки 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

Android Gradle Plugin 7.0.0 и более поздние версии требуют Java 11 для корректной работы. Это значительное изменение по сравнению с предыдущими версиями, которые поддерживали Java 8. Согласно официальным заметкам о выпуске Google, при использовании Android Gradle plugin 7.0 для сборки вашего приложения JDK 11 теперь обязателен для запуска Gradle.

Это требование затрагивает три разных аспекта вашего процесса сборки:

  1. Время выполнения JDK – версия Java, используемая демоном Gradle для выполнения скриптов сборки
  2. Компиляционный JDK – версия Java, используемая для компиляции кода Android-приложения
  3. Совместимость Android SDK – версия Java, которую ожидают инструменты Android

Ваша текущая конфигурация фокусируется на времени выполнения JDK (org.gradle.java.home), но могут возникнуть проблемы в других областях настройки.

Полные методы настройки

1. Конфигурация gradle.properties

Хотя вы уже установили org.gradle.java.home, убедитесь, что это находится в файле gradle.properties уровня проекта (а не уровня модуля), и проверьте, что путь точно соответствует вашей установке Java 11:

properties
# Установить 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:

bash
# Для Mac/Linux
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.10.jdk/Contents/Home

# Затем запустить Gradle
./gradlew clean build

Или использовать Java home напрямую:

bash
./gradlew -Dorg.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk-11.0.10.jdk/Contents/Home clean build

3. Переменные окружения

Убедитесь, что переменные окружения настроены правильно. Проверьте профиль оболочки (~/.zshrc или ~/.bash_profile для Mac):

bash
echo $JAVA_HOME
which java
java -version

Проблемы настройки на Mac

Проверка установки Java

На Mac установки Java могут быть запутанными. Проверьте вашу установку:

bash
# Список всех установок 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:

bash
# Путь к Java 11 от Homebrew
export JAVA_HOME=$(brew --prefix openjdk@11)

Конфигурация Gradle Wrapper

Версия Gradle wrapper (6.8.2) совместима с Java 11, но сам дистрибутив wrapper может потребовать обновления или перенастройки. Проверьте ваш скрипт gradlew и gradle-wrapper.properties:

properties
# gradle-wrapper.properties
distributionUrl=https://services.gradle.org/distributions/gradle-6.8.2-bin.zip

Если проблемы продолжаются, рассмотрите обновление до более новой версии Gradle, которая лучше протестирована с Java 11:

properties
distributionUrl=https://services.gradle.org/distributions/gradle-7.0.2-bin.zip

Затем пересоздайте wrapper:

bash
./gradlew wrapper --gradle-version=7.0.2

Настройки IDE Android Studio

Конфигурация JDK для Gradle

Согласно решениям на Stack Overflow, вам необходимо настроить Android Studio на использование правильного JDK:

  1. Перейдите в File > Settings > Build, Execution, Deployment > Build Tools > Gradle
  2. В выпадающем списке Gradle JDK выберите JDK 11 (не встроенный)
  3. Если JDK 11 не отображается, нажмите Add JDK и укажите путь к вашей установке Java 11

Настройки структуры проекта

Убедитесь, что структура проекта корректна. Иногда Android Studio может кэшировать неверные настройки. Попробуйте:

  1. File > Invalidate Caches / Restart
  2. Выберите Invalidate and Restart

Шаги устранения неполадок

Пошаговое решение

  1. Проверьте установку Java:

    bash
    java -version
    javac -version
    
  2. Проверьте все файлы конфигурации:

    • gradle.properties уровня проекта
    • gradle.properties уровня пользователя (~/.gradle/gradle.properties)
    • Переменные окружения
    • Настройки Android Studio
  3. Очистите и пересоберите:

    bash
    ./gradlew clean
    ./gradlew --stop   # Остановить демона Gradle
    ./gradlew build
    
  4. Проверьте наличие конфликтующих настроек:
    Ищите дублирующие org.gradle.java.home в разных файлах конфигурации

  5. Тестируйте с чистым проектом:
    Создайте новый проект Jetpack Compose и примените вашу конфигурацию Java 11, чтобы изолировать проблему

Частые ошибки

  • Чувствительность к регистру пути: файловые системы Mac могут быть чувствительными к регистру
  • Отсутствие инструментов Java: убедитесь, что доступны как java, так и javac
  • Кэш IDE: Android Studio может кэшировать неверные настройки версии Java
  • Модульные vs проектные настройки: настройки в gradle.properties уровня модуля могут не влиять на процесс сборки

Финальная проверка

После применения всех настроек проверьте вашу конфигурацию, запустив:

bash
./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.

Источники

  1. Android Gradle Plugin 7.0.0 Release Notes – Требование Java 11
  2. Stack Overflow: Android Gradle plugin requires Java 11 to run
  3. GitHub: Конфигурация версии Java для Android Gradle plugin
  4. Microsoft App Center: Требование Java 17 для Android Gradle plugin
  5. Repeato: Решение ошибки Java 11 в Android Studio

Заключение

Ошибка версии Java с Android Gradle plugin 7.0.0‑alpha13 обычно возникает из‑за неполной настройки в нескольких системах. Чтобы решить эту проблему:

  1. Настройте Java 11 во всех местах: gradle.properties, переменные окружения и настройки Android Studio
  2. Проверьте путь установки Java на Mac, убедившись, что доступны как java, так и javac
  3. Обновите Gradle wrapper до версии, лучше протестированной с Java 11, если необходимо
  4. Очистите кэши Android Studio и перезапустите IDE после изменений настроек
  5. Проверьте чистые сборки с флагом --info, чтобы убедиться, что Java 11 обнаружена

Самый надёжный подход – настроить версию Java во всех трёх местах: gradle.properties, переменные окружения и настройки IDE, затем очистить кэши и перезапустить. Такой комплексный подход обеспечивает согласованность во всех средах сборки и конфигурациях IDE.

Авторы
Проверено модерацией
Модерация