Avatar ·

Где находится установленная Java на macOS? Путь к JDK и JRE

Всем привет! Я начинающий Java-разработчик, перешёл на Mac недавно и никак не могу разобраться с расположением Java. На Windows всё было просто — обычно в `C:\Program Files\Java`. А на macOS я запутался. Я установил JDK 17 через официальный установщик с сайта Oracle. После установки я проверил версию в терминале: ```java java -version // вывод: java version "17.0.1" 2021-10-19 LTS ``` Всё работает, но я не могу найти папку с установкой. Пытался искать в `/Library/Java/`, там есть какая-то папка `JavaVirtualMachines`, но внутри неё лежит только `jdk-17.0.1.jdk` — это какой-то пакет, а не папка. Когда я пытаюсь зайти в него через Finder, он открывается как обычный файл. Мне нужно узнать точный путь, потому что я хочу: 1. Посмотреть исходники стандартных классов (например, `java.lang.String`). 2. Настроить `JAVA_HOME` в `.zshrc` для Maven и Gradle. 3. Понять, куда класть новые JDK, если я захочу установить несколько версий. Почему на macOS так всё запрятано? Где на самом деле лежит Java? И что за странный формат `.jdk`? Пожалуйста, объясните подробно, с примерами команд для терминала. Заранее спасибо! <<>>

Где искать Java на macOS: полная анатомия

Привет! Ты столкнулся с особенностью macOS: Java здесь устанавливается не как обычная папка, а как пакет (bundle) с расширением .jdk. Фактически это тоже папка, но Finder отображает её как файл, чтобы не допустить случайного повреждения. Давай разберёмся по порядку.

1. Основная директория установки

Все JDK на macOS хранятся в:

/Library/Java/JavaVirtualMachines/

Здесь лежат все установленные версии. Например:

/Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk

Чтобы зайти внутрь этого пакета через терминал, используй команду cd с полным путём. Или открой его через контекстное меню Finder: Показать содержимое пакета.

2. Внутренняя структура JDK-пакета

Зайди внутрь пакета:

cd /Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home

Ты увидишь знакомую структуру:

  • bin/ — исполняемые файлы (java, javac, jar)
  • lib/ — библиотеки и JAR-файлы
  • src.zip — архив с исходниками стандартных классов (то, что ты ищешь!)
  • include/ — заголовочные файлы для нативного кода

Чтобы посмотреть исходники String, распакуй src.zip:

unzip /Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home/src.zip -d ~/java-sources

Теперь в папке ~/java-sources/java/lang/ лежит String.java.

3. Как правильно настроить JAVA_HOME

Лучший способ — использовать утилиту /usr/libexec/java_home. Она автоматически находит установленные JDK и возвращает путь к Contents/Home. Добавь в файл ~/.zshrc:

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

Если нужно указать конкретную версию (например, 11):

export JAVA_HOME=$(/usr/libexec/java_home -v 11)

После этого перезагрузи терминал или выполни source ~/.zshrc.

4. Команды для быстрого поиска

  • which java — покажет, какой исполняемый файл используется (обычно симлинк в /usr/bin/java)
  • ls -l $(which java) — увидишь, что это ссылка на /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
  • /usr/libexec/java_home -V — список всех установленных JDK с версиями и путями
  • readlink -f $(which java) — полный путь к реальному файлу

5. Установка нескольких версий

Просто скачай другой JDK (например, 11) и установи его. Он появится рядом:

/Library/Java/JavaVirtualMachines/jdk-11.0.12.jdk

Переключаться между ними можно через java_home или менеджеры типа jEnv или Sdkman. Советую Sdkman — он удобно управляет версиями:

curl -s "https://get.sdkman.io" | bash
sdk install java 17.0.1-tem
sdk use java 11.0.12-tem

Таким образом, Java на macOS не "запрятана", а просто упакована в пакет. Освоив эти команды, ты быстро привыкнешь.

<<>>

Альтернативный подход: использование Homebrew

Если тебе не нравится возиться с ручной установкой и поиском пакетов, рекомендую использовать Homebrew — популярный пакетный менеджер для macOS. Он сам настроит пути и сделает Java "как на Windows".

Установка через Homebrew:

brew install openjdk@17

После установки Homebrew подскажет, как добавить Java в PATH. Обычно нужно выполнить:

sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk

Или просто добавить в ~/.zshrc:

export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH"
export JAVA_HOME="/opt/homebrew/opt/openjdk@17"

Преимущества этого подхода:

  • Homebrew сам обновляет Java через brew upgrade
  • Можно легко переключаться между версиями: brew install openjdk@11
  • Путь всегда одинаковый: /opt/homebrew/opt/openjdk@17
  • Не нужно запоминать странные пути с .jdk и Contents/Home

Минус: Homebrew устанавливает OpenJDK (бесплатная версия от сообщества), а не Oracle JDK. Но для 99% задач разницы нет. Если тебе нужен именно Oracle JDK (например, для коммерческой поддержки), то первый ответ — твой выбор.

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

java -version
echo $JAVA_HOME

Всё должно работать сразу после настройки PATH.