Где находится установленная Java на macOS? Путь к JDK и JRE
Где искать 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.