Android SDK не видит JDK: пошаговое решение с примерами на Java

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

«Android SDK installation doesn't find JDK» — знакомая боль?

Вы пытаетесь настроить среду для разработки под Android, запускаете установку SDK, а в ответ — тишина? Или, что ещё хуже, — красная ошибка: «Android SDK installation doesn't find JDK». Если вы когда-либо гуглили эту фразу, то знаете: на Stack Overflow этой проблеме посвящены тысячи просмотров и десятки ответов.

Почему так происходит? Казалось бы, вы скачали JDK, установили, а система упорно его не видит. В этой статье мы не просто разберём причины, а покажем на реальных примерах кода на Java, как правильно настроить окружение, чтобы Android SDK наконец-то подружился с JDK.

Мы — команда PythonLib, и хотя в нашем названии есть Python, мы знаем, что Java — это основа Android-разработки. Сегодняшний материал будет полезен каждому, кто хочет раз и навсегда решить эту головную боль.

Почему Android SDK не видит JDK? Три главные причины

Прежде чем лезть в код, давайте поймём врага в лицо. Ошибка «Android SDK installation doesn't find JDK» чаще всего возникает из-за трёх вещей:

  • Неверно указан путь к JDK — установщик просто не знает, где искать Java.
  • Отсутствует переменная окружения JAVA_HOME — Android SDK полагается на неё.
  • Конфликт версий — вы установили 32-битный JDK, а система 64-битная, или наоборот.

Самое обидное, что даже если вы вручную указали путь в установщике, ошибка может вернуться. Почему? Потому что Android SDK проверяет не только явный путь, но и переменные среды. Давайте разберём каждый случай с примерами.

Шаг 1: Проверяем, установлен ли JDK вообще

Прежде чем что-то настраивать, убедитесь, что JDK действительно есть. Откройте терминал (командную строку) и выполните простую команду на Java:

java -version

Если вы видите что-то вроде:

java version "17.0.2" 2022-01-18 LTS
Java(TM) SE Runtime Environment (build 17.0.2+8-LTS-86)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.2+8-LTS-86, mixed mode)

Всё отлично — JDK установлен. Если же команда не найдена, значит, проблема глубже. Вам нужно скачать JDK с официального сайта Oracle или использовать OpenJDK. Для Android разработки рекомендуется версия 11 или 17.

Пример кода: проверка версии Java изнутри

Если вы пишете скрипт на Java, который проверяет окружение, можно использовать встроенный класс System:

public class CheckJavaVersion {
    public static void main(String[] args) {
        String version = System.getProperty("java.version");
        String home = System.getProperty("java.home");
        System.out.println("Java version: " + version);
        System.out.println("Java home: " + home);
    }
}

Этот код выведет версию и путь к установленной Java. Если java.home указывает на папку jre, а не jdk, это может быть причиной ошибки — Android SDK требует именно JDK, а не JRE.

Шаг 2: Настройка переменной JAVA_HOME

Это самый частый совет на Stack Overflow, и он работает. Переменная JAVA_HOME должна указывать на корневую папку JDK, а не на папку bin или jre.

Как это сделать?

  • Windows: Панель управления → Система → Дополнительные параметры системы → Переменные среды. Создайте новую системную переменную JAVA_HOME со значением, например: C:\Program Files\Java\jdk-17.
  • macOS/Linux: Отредактируйте файл ~/.bashrc или ~/.zshrc и добавьте строку: export JAVA_HOME=/usr/lib/jvm/jdk-17.

После этого перезапустите терминал и проверьте:

echo %JAVA_HOME%   # для Windows
echo $JAVA_HOME    # для macOS/Linux

Пример: проверка JAVA_HOME через Java-код

Чтобы убедиться, что переменная установлена правильно, можно написать простую программу:

public class CheckJavaHome {
    public static void main(String[] args) {
        String javaHome = System.getenv("JAVA_HOME");
        if (javaHome == null) {
            System.out.println("JAVA_HOME is not set!");
        } else {
            System.out.println("JAVA_HOME = " + javaHome);
        }
    }
}

Если после запуска вы видите null, значит, переменная не установлена — возвращайтесь к предыдущему шагу.

Шаг 3: Обновляем PATH (чтобы команда java работала)

Даже если JAVA_HOME установлен, Android SDK может не найти JDK, если в переменной PATH нет пути к папке bin внутри JDK. Добавьте %JAVA_HOME%\bin (Windows) или $JAVA_HOME/bin (macOS/Linux) в PATH.

После этого проверьте в терминале:

javac -version

Если команда javac (компилятор Java) работает, значит, всё в порядке. Если нет — проверьте, что вы добавили именно bin папку, а не корневую.

Шаг 4: Исправляем ошибку в Android Studio

Иногда проблема не в системе, а в самой Android Studio. Если вы используете её, проверьте настройки:

  1. Откройте File → Project Structure → SDK Location.
  2. Убедитесь, что в поле JDK location указан правильный путь к JDK.
  3. Если поле пустое или неверное, нажмите кнопку «...» и выберите папку JDK вручную.

Вот пример того, как это должно выглядеть в конфигурационном файле local.properties (создаётся в корне проекта):

sdk.dir=C\:\\Users\\YourUser\\AppData\\Local\\Android\\Sdk
jdk.dir=C\:\\Program Files\\Java\\jdk-17

Обратите внимание: в Windows обратные слеши нужно экранировать двойными, как в примере.

Шаг 5: Если всё ещё не работает — чистим кэш

Бывает, что Android SDK запоминает старые пути и не обновляет их. Попробуйте:

  • Удалить папку .android в домашней директории пользователя (будьте осторожны — это сбросит настройки эмулятора).
  • Переустановить Android SDK Tools (через SDK Manager).
  • Запустить установку от имени администратора (Windows).

Если вы используете командную строку для установки

Блоги

Рекомендаций по книгам