Avatar ·

Как установить Java 8 (JDK 8) на Mac: пошаговое руководство

Всем привет! Я начинающий Java-разработчик, недавно перешёл на Mac (macOS Ventura). Нужно установить Java 8 для старого учебного проекта. Проблема в том, что я скачал последнюю версию Java (21) с официального сайта, но мой проект на ней не компилируется — вылетают ошибки про устаревшие API и неподдерживаемые флаги. Вот пример кода, который я пытаюсь запустить: ```java public class LegacyApp { public static void main(String[] args) { // Используем устаревший API из Java 8 java.util.Date date = new java.util.Date(); System.out.println("Date: " + date); // Пытаемся использовать PermGen (работало только в Java 8) System.gc(); } } ``` При компиляции через терминал командой `javac LegacyApp.java` получаю предупреждения, а при запуске `java LegacyApp` — ошибку: "Unsupported class file major version". Погуглил — пишут, что нужно именно Java 8. Но на сайте Oracle теперь предлагают только Java 17+. Пробовал через Homebrew — команда `brew install openjdk@8` выдаёт ошибку "No available formula". Как правильно установить Java 8 на Mac? Нужно ли удалять текущую Java? Как переключаться между версиями? Буду благодарен за подробную инструкцию для новичка. <<>>

Пошаговая установка Java 8 (JDK 8) на macOS

Проблема в том, что Oracle прекратила публичную поддержку Java 8, поэтому её нет в стандартных репозиториях. Но есть проверенный способ — использовать Adoptium Temurin (ранее AdoptOpenJDK) — полностью открытую сборку JDK 8.

Шаг 1: Удалите старую Java (опционально, но рекомендуется)

Откройте Терминал и выполните:

sudo rm -rf /Library/Java/JavaVirtualMachines/*

Проверьте, что осталось:

java -version
# Должно выдать: "No Java runtime present"

Шаг 2: Установка Homebrew (если ещё не установлен)

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Шаг 3: Установка Adoptium JDK 8 через Homebrew

brew tap adoptopenjdk/openjdk
brew install --cask adoptopenjdk8

Если команда не сработала (новые версии macOS), используйте:

brew install openjdk@8

После установки проверьте:

java -version
# Должно вывести: openjdk version "1.8.0_392"

Шаг 4: Настройка JAVA_HOME

Добавьте в файл ~/.zshrc (или ~/.bash_profile):

export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
export PATH=$JAVA_HOME/bin:$PATH

Примените изменения:

source ~/.zshrc

Проверьте:

echo $JAVA_HOME
# Должно вывести: /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

Шаг 5: Компиляция и запуск вашего примера

javac LegacyApp.java
java LegacyApp
# Вывод: Date: Tue Oct 24 14:30:00 MSK 2023

Как переключаться между версиями Java?

Установите несколько JDK (например, 8, 11, 17). Для переключения используйте:

export JAVA_HOME=$(/usr/libexec/java_home -v 11)
java -version
# Теперь версия 11

Можно создать алиасы в ~/.zshrc:

alias java8='export JAVA_HOME=$(/usr/libexec/java_home -v 1.8); java -version'
alias java11='export JAVA_HOME=$(/usr/libexec/java_home -v 11); java -version'

Важные замечания:

  • Не используйте Oracle JDK 8 — он требует лицензию для коммерческого использования.
  • Adoptium Temurin — это open-source замена, полностью совместимая.
  • Если проект использует Maven, укажите в pom.xml:
    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
  • Для Gradle добавьте в build.gradle:
    sourceCompatibility = '1.8'
    targetCompatibility = '1.8'

После этих шагов ваш проект на Java 8 будет работать стабильно. Если используете IntelliJ IDEA — в настройках проекта укажите путь к установленному JDK 8.

<<>>

Альтернативный способ: установка через SDKMAN!

Если Homebrew вызывает проблемы, попробуйте SDKMAN! — менеджер версий для Java-инструментов. Он удобен для разработчиков, которые часто переключаются между JDK.

Установка SDKMAN!

curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"

Установка JDK 8

sdk list java  # Показать доступные версии
sdk install java 8.0.392-tem  # Установить Temurin JDK 8

Переключение между версиями

sdk use java 8.0.392-tem  # Временное переключение
sdk default java 8.0.392-tem  # Постоянное переключение

Проверка

java -version
# openjdk version "1.8.0_392"

Преимущества SDKMAN!:

  • Управление не только JDK, но и Maven, Gradle, Kotlin.
  • Автоматическая настройка JAVA_HOME.
  • Простота обновления: sdk upgrade java.

Недостаток: требует интернет-соединения при первом запуске каждой версии. Но если вы активно работаете с разными версиями Java — это лучший выбор.

Для вашего случая оба способа рабочие. Рекомендую начать с Homebrew (первый ответ), так как он более стандартный для macOS, а SDKMAN! — для продвинутых сценариев.