«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. Если вы используете её, проверьте настройки:
- Откройте File → Project Structure → SDK Location.
- Убедитесь, что в поле JDK location указан правильный путь к JDK.
- Если поле пустое или неверное, нажмите кнопку «...» и выберите папку 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).
Если вы используете командную строку для установки