Как установить Java 8 на Mac

Я хочу заняться программированием с использованием последней версии JavaFX, для которой требуется Java 8. Я использую IntelliJ 13 CE и Mac OS X 9 Mavericks. Я запустил установщик Oracle 8 Java, и файлы выглядят так, как будто

/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk

но предыдущие версии на

/System/Library/Java/JavaFrameworks/jdk1.6....

Не уверен, почему последний установщик помещает это в /Library вместо /System/Library (ни в чем разница). Но /usr/libexec/java_home не находит 1.8, поэтому все сообщения, которые я нашел о том, как установить вашу текущую версию Java, не работают. Я попытался добавить символическую ссылку, чтобы она выглядела как 1.8 в /System/Library... путь, но это не помогает. /usr/libexec/java_home -V еще только списки старых java 1.6.

По иронии судьбы, панель управления "Java" в Системных настройках показывает только Java 1.8!

Почему установщик Oracle не помещает его туда, куда он действительно идет? И как я могу обойти эту проблему?

38 ответов

Не полагайтесь на Oracle для правильной установки Java на вашем Mac.

Используйте Homebrew. это установит последнюю версию JDK:

brew cask install java

Если вы хотите управлять несколькими версиями Java на вашем Mac, подумайте об использовании jenv.

ОБНОВЛЕНИЕ: Теперь, когда Java 8 больше не самая последняя версия, если вы хотите, чтобы Java 8 установила ее следующим образом:

brew tap caskroom/versions
brew cask install java8

Чтобы получить список всех более старых версий Java: brew tap caskroom/versions а затем использовать brew search java,

Мы используем brew cask, поскольку в противном случае мы использовали бы установщик Oracle GUI, который, вероятно, не установит Java должным образом на вашем Mac. (Используйте приложение brew cask install APP для установки приложений с графическим интерфейсом; используйте приложение brew install APP.) Java не является приложением с графическим интерфейсом; Это не должно требовать "бочки", но по крайней мере Oracle является последовательным.

Для Эль-Капитана, Сьерры и Высокой Сьерры

Сначала установите и обновите brew из терминала:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

brew tap caskroom/versions

brew update

Java 8:

brew cask install java8

Java последние:

brew cask install java

Java8 больше не доступен на домашнем пиве, brew install java8 не будет работать.

Вместо этого используйте:

brew cask install adoptopenjdk/openjdk/adoptopenjdk8

Смотрите этот коммит для технических деталей.

Пожалуйста, обратите внимание, что вы можете увидеть проблемы вокруг Cask adoptopenjdk8 exists in multiple taps, Это известная проблема, над которой в настоящее время ведется работа, которую вы можете увидеть здесь:

https://github.com/AdoptOpenJDK/homebrew-openjdk/issues/106

Для тех, кто не хочет бегать по деталям, вот резюме:

# To install JDK8
brew cask install adoptopenjdk/openjdk/adoptopenjdk8

# To be able to safely run 'brew cleanup'
brew untap adoptopenjdk/openjdk
brew untap caskroom/versions
brew cleanup

В 2021 году у вас будет только brew

      brew install jenv openjdk@8
jenv add /usr/local/opt/openjdk@8

А затем добавьте в Intellij IDEA новый SDK со следующим путем:

      ~/.jenv/versions/8/libexec/openjdk.jdk/Contents/Home/

Я также предложу добавить в свой .zshrc (или же .bashrc)

      export PATH="$HOME/.jenv/bin:$PATH"
eval "$(jenv init -)"
export JAVA_HOME="$HOME/.jenv/versions/`jenv version-name`"

Я только что сделал это на моем MBP, и пришлось использовать

$ brew tap caskroom/versions
$ brew cask install java8

чтобы получить java8 для установки.

Предположение: Mac машина и вы уже установили доморощенный.

Установите бочку:

$ brew tap caskroom/cask
$ brew tap caskroom/versions

Чтобы установить последнюю версию Java:

$ brew cask install java

Чтобы установить Java 8:

$ brew cask install java8

Если вы хотите установить / управлять несколькими версиями, вы можете использовать 'jenv':

Установите и настройте jenv:

$ brew install jenv
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile

Добавьте установленную Java в jenv:

$ jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
$ jenv add /Library/Java/JavaVirtualMachines/jdk1.11.0_2.jdk/Contents/Home

Чтобы увидеть все установленные Java:

$ jenv versions

Выше команда даст список установленных Java:

* system (set by /Users/lyncean/.jenv/version)
1.8
1.8.0.202-ea
oracle64-1.8.0.202-ea

Настройте версию Java, которую вы хотите использовать:

$ jenv global oracle64-1.6.0.39

Чтобы установить JAVA_HOME:

$ jenv enable-plugin export

Вариант, который мне действительно нравится для запуска приложений на моем локальном компьютере, - это использовать Docker. Вы можете просто запустить свое приложение в официальном контейнере JDK - это означает, что вам не нужно беспокоиться о настройке всего на вашем локальном компьютере (или беспокоиться о запуске нескольких разных версий JDK для разных приложений и т. Д.)

Хотя это может не помочь вам в решении текущих проблем с установкой, это решение, которое означает, что вы можете обойти минное поле проблем, связанных с попыткой правильной работы Java на вашем компьютере разработчика!

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

  1. Нет необходимости устанавливать какую-либо версию Java на локальном компьютере (вы просто запустите Java в контейнере, который вы извлекаете из Docker Hub)
  2. Очень легко переключаться на разные версии Java, просто меняя тег на контейнере.
  3. Зависимости проекта устанавливаются внутри контейнера - так что, если вы испортили свою конфигурацию, вы можете просто сбросить ядро ​​на контейнере и начать заново.

Очень простой пример:

Создать Dockerfile:

FROM java:8
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
  • Здесь мы указываем Java-контейнер с версией 8 SDK (java:8 - чтобы использовать Java 7, вы можете просто указать: java:7)
  • Мы сопоставляем локальный каталог с каталогом: /usr/src/myapp внутри контейнера

Создать docker-compose.yml файл:

version: "2"

services:
  java:
    build: .
    volumes:
      - .:/usr/src/myapp

Теперь предположим, что у нас есть этот файл Java:

HelloWorld.java

public class HelloWorld {
    public static void main(String[] args) {        
        System.out.println("Hello, World");
    }
}

Итак, у нас есть следующая файловая структура:

.
|_ Dockerfile
|_ docker-compose.yml
|_ HelloWorld.java

Вы можете делать различные вещи Java, такие как:

компиляции:

docker-compose run --rm java javac HelloWorld.java 
  • Вы должны заметить, что HelloWorld.class отображается в вашем текущем каталоге (это потому, что мы сопоставили текущий каталог с местоположением внутри контейнера, где существует наш код

бежать:

docker-compose run --rm java java HelloWorld 
  • Примечание: при первом запуске он извлекает изображение и т. Д. Это займет некоторое время - это происходит только в первый раз
  • docker-compose run - запускает команду из контейнера
  • -rm говорит докеру удалить контейнер после завершения выполнения команды
  • java это имя службы / контейнера (из нашего файла docker-compose), для которого будет выполняться эта команда
  • остальная часть строки - команда для запуска внутри контейнера.

Это довольно крутой способ справиться с запуском разных версий Java для разных приложений без полной путаницы в вашей локальной настройке:).

Вот немного более сложный пример, который имеет Maven и простое приложение Spring

Отказ от ответственности:

JavaVirtualMachines папка теперь правильная

Почему установщик Oracle не помещает его туда, куда он действительно идет? И как я могу обойти эту проблему?

Не проблема.

Папка /Library/Java/JavaVirtualMachines/ новый дом для JVM на macOS

Чтобы установить JVM, используйте установщик, описанный ниже.

Чтобы удалить, просто используйте Finder для удаления JVM из этой папки. Вам будет предложено ввести пароль системного администратора для завершения удаления.


Java 9 & 10 & 11

Еще в 2010 году Apple присоединилась к проектуOpenJDK вместе с Oracle, IBM, Red Hat, Azul и другими поставщиками Java. Каждый участник вносит исходный код, тестирование и обратную связь в унифицированную кодовую базу OpenJDK.

Apple предоставила большую часть своего специфичного для Mac кода для своей JVM. Теперь Apple больше не выпускает свою собственную JVM для Mac. Теперь у вас есть выбор поставщика JVM со сборками, основанными на базе кода OpenJDK.

Вы найдете исходный код по адресу: http://openjdk.java.net/

Помните, что в 2017 году Oracle, JCP и OpenJDK приняли новый план быстрой подготовки к выпуску регулярно планируемых версий Java, которые будут поставляться предсказуемым образом.

Прочтите этот пост в блоге Azul Systems за 2018-07, где вы найдете много подробностей, устранение путаницы при обновлении Java от Саймона Риттера.

Вендоры

Довольно исчерпывающий список прошлых и настоящих реализаций JVM см. На этой странице в Википедии.

Вот три активных в настоящее время источника, о которых я знаю.

Oracle JVM

Oracle предоставляет установщики JDK и JRE для нескольких платформ, включая macOS.

Их новый бизнес-план состоит в том, чтобы обеспечить реализацию Java под торговой маркой Oracle за плату при производстве и бесплатно для использования в разработке / тестировании / демонстрации. Поддержка предыдущих выпусков требует платной программы поддержки. Они объявили о своем намерении сделать так, чтобы их фирменный выпуск соответствовал функциональным возможностям OpenJDK. Они даже пожертвовали свои коммерческие дополнения, такие как Flight Recorder, для проекта OpenJDK.

Zulu & Zing от Azul

Azul Systems предлагает широкий выбор продуктов JVM.

  • Их Zulu Линия основана непосредственно на OpenJDK и доступна бесплатно с дополнительными платными планами поддержки.
  • Их Zing Линия предлагает коммерческие продукты JVM, дополненные альтернативными техническими реализациями, такими как специализированный сборщик мусора.

Обе их линии предлагают инсталляторы для macOS.

В настоящее время я использую Zulu для Java 10.0.1 на MacOS High Sierra с IntelliJ 2018.2 и Vaadin 8. Я скачал с этой страницы. Кстати, я не нахожу никаких элементов, связанных с Java, установленных в приложении " Системные настройки Apple".

AdoptOpenJDK.net

AdoptOpenJDK - это работа сообщества по созданию бинарных файлов исходного кода OpenJDK. В настоящее время доступно только для Java 8, созданной для использования движка HotSpot или OpenJ9.

OpenJ9 от Eclipse

Другим поставщиком в будущем может стать проект OpenJ9. Спонсируемый в Eclipse Foundation, с технологией и поддержкой, пожертвованной IBM в 2017 году. Я не могу понять, собираются ли они распространять для macOS или нет.


Как установить

Установщики, предоставляемые Oracle или Azul, очень просты в эксплуатации. Просто запустите приложение установщика на вашем Mac. Появится окно, показывающее ход установки.

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

  • Посещение /Library/Java/JavaVirtualMachines/ папка, чтобы увидеть элемент для новой JVM.
  • Запустите консоль, такую ​​как Terminal.app и введите java -version чтобы увидеть бренд и номер версии вашей JVM.

После проверки успеха отключите образ.dmg в Finder. Затем удалите загруженный файл.dmg.

У меня та же проблема, которую нужно решить, потому что мне нужно установить JDK8 для запуска Android SDK Manager (потому что кажется, что он плохо работает с JDK9). Тем не менее, я расскажу вам, как я решаю все проблемы на Mac (Sierra).

Во-первых, вам нужно заварить с бочкой и jenv.

  1. Вы можете найти полезное руководство здесь, Руководство по установке Homebrew Cask. Не забудьте нажать "Caskroom/ версии", работающие в терминале: brew tap caskroom/versions
  2. После этого установите jenv с помощью: brew install jenv
  3. Установите любую версию с бочкой brew cask install java8 (или же java7 или же java если вы хотите установить последнюю версию, jdk9)
  4. Последний шаг - настроить, какую версию запустить (и позволить jenv управлять вашим JAVA_HOME). jenv versions перечислить все версии, установленные на вашем компьютере, а затем активировать ту, с которой вы хотите jenv global [JDK_NAME_OF_LIST]

Вы можете найти другую полезную информацию здесь, на этом Github Gist brew-java-and-jenv.md, в этом блоге. Установите несколько JDK на Mac и на сайте Jenv.

Пожалуйста, выполните следующие команды, и он установит Java 8 на OS X:

$ brew tap adoptopenjdk/openjdk
$ brew cask install homebrew/cask-versions/adoptopenjdk8

Если у вас есть несколько версий Java на вашем компьютере, и вы хотите выбрать его динамически во время выполнения, т.е. в моем случае у меня есть две версии:

ls -la /Library/Java/JavaVirtualMachines
drwxr-xr-x  3 root  wheel    96B Nov 16  2014 jdk1.7.0_71.jdk/
drwxr-xr-x  3 root  wheel    96B Mar  1  2015 jdk1.8.0_31.jdk/

Вы можете изменить их, изменив /etc/profile содержание. Просто добавьте (или измените) следующие две строки в конце файла:

export JAVA_HOME=YOUR_JAVA_PATH/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

В моем случае это должно быть похоже на следующее, если я хочу использовать:

Java 7:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

Java 8:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

После сохранения файла, пожалуйста, запустите source /etc/profile и это должно работать. Вот результаты, когда я использую первый и второй вариант соответственно:

Java 7:

java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)

Java 8:

java -version 
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)

Процесс аналогичен, если ваша папка Java находится в разных местах.

Похоже, никто еще не упомянул SDK man ( https://sdkman.io/).

SKD man позволяет установить несколько версий Java на Mac и легко переключаться между этими версиями. Более подробная информация доступна на https://sdkman.io/usage.

Например:

$ sdk list java                                                                                                                                                                                                                       
================================================================================
Available Java Versions
================================================================================
   * 12.ea.20-open
     11.0.1-zulu
 > * 11.0.1-open
     10.0.2-zulu
     10.0.2-open
     9.0.7-zulu
     9.0.4-open
     8.0.192-zulu
     8.0.191-oracle
   + 8.0.181-oracle
     7.0.181-zulu
     1.0.0-rc-10-grl
     1.0.0-rc-9-grl
     1.0.0-rc-8-grl


================================================================================
+ - local version
* - installed
> - currently in use
================================================================================

$ sdk install java 8.0.191-oracle

$ sdk use java 8.0.191-oracle

Using java version 8.0.191-oracle in this shell.                                                                                                                                                                                                      

$ java -version                                                                                                                                                                                                                        
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

$ sdk use java 11.0.1-open                                           

Using java version 11.0.1-open in this shell.

$ java -version                                                                                                                                                                                                                        openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment 18.9 (build 11.0.1+13)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)
                                                                                                                                                                                                         ```


Заварить бочку установить caskroom/ версии /java8

на 2021 год этот работал у меня

      brew tap homebrew/cask-versions


brew install --cask adoptopenjdk8

У меня есть приложения, которые используют как Java 7, так и 8, и мне приходится все время ходить туда-сюда.

Я использую этот сценарий, написанный Йоханом:

http://www.jayway.com/2014/01/15/how-to-switch-jdk-version-on-mac-os-x-maverick/

Теперь вы можете установить его при запуске или вызвать скрипт позже.
Установите JDK для Mac.

Java 7

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

Java 8

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Запустите эти команды на Mac High Sierra

brew update
brew tap caskroom/versions
brew cask install java8

и проверьте с помощью команды

java -version

По состоянию на 2021 год

      brew install --cask adoptopenjdk/openjdk/adoptopenjdk8

Команды brew cask были отключены 21 декабря 2020 года с выпуском Homebrew 2.7.0.

Используйте следующие команды для установки JDK

brew install --cask accepttopenjdk / openjdk / accepttopenjdk8

Если вы работаете на Mac, то Homebrew - это способ установки.

Похоже, что версия 8 уже не самая последняя, ​​поэтому она недоступна по умолчанию. brew cask install java.

Вместо этого мне удалось сделать следующее:

brew install homebrew/cask-versions/

Если это не удалось, просто попробуйте следующее:

brew install homebrew/cask-versions/adoptopenjdk8

Тест с brew cask list или java -version

Вы можете попробовать это:

$ brew search jdk
$ brew cask install homebrew/cask-versions/adoptopenjdk8
$ /usr/libexec/java_home

Используя варево

brew install Caskroom/cask/java

Если вы используете его НЕ для личного использования, вы можете вместо этого использовать OpenJDK, чтобы избежать любых возможных судебных исков со стороны Oracle.

brew cask install adoptopenjdk8

Лучший способ - использовать менеджер пакетов Brew, но команду

 brew cask install java8

не удается с ошибкой:

Error: No available formula with the name "java8" 

Так что используйте

brew cask install caskroom/versions/java8

Как я нашел "caskroom/version /java8": используя команду поиска brew:

brew cask search java8

Руководство по установке MacOS Big Sur 2021 Java 8 :

  1. Перейдите на https://profile.oracle.com/myprofile/account/create-account.jspx и зарегистрируйтесь, если еще не сделали этого;
  2. Перейдите на https://www.oracle.com/java/technologies/downloads/#jdk17-mac.
  3. Выберите «Java 8»;
  4. Выберите «macOS»;
  5. Нажмите "jdk-8u301-macosx-x64.dmg";
  6. Установите флажок;
  7. Нажмите «Скачать jdk-8u301-macosx-x64.dmg»;
  8. Откройте скачанный файл;
  9. Следуйте руководству по установке;

Наслаждайтесь =)

brew search openjdk найдите несколько формул openjdk, в 2021 году brew предложите openjdk11 и openjdk8 в качестве опций.

Установить с Homebrew

Версия Java, доступная в Homebrew Cask до 3 октября 2018 г., действительно была Oracle JVM. Однако теперь он обновлен до OpenJDK. Обязательно обновите Homebrew, и тогда вы увидите самую последнюю версию, доступную для установки.

1. установите Homebrew, если вы еще этого не сделали. Убедитесь, что он обновлен:

brew update

2. Добавьте кран для контейнеров, если вы еще этого не сделали (или вы больше не видите более старые версии Java на шаге № 3):

brew tap homebrew/cask-versions

3. а для версий AdoptOpenJDK добавьте этот кран:

brew tap adoptopenjdk/openjdk

Эти контейнеры часто меняют свои версии Java, и могут быть другие ответвления с дополнительными версиями Java.

4. Ищите устанавливаемые версии:

brew search java 

или для версий AdoptOpenJDK:

brew search jdk     

5. Проверьте информацию о версии, которая будет установлена:

brew cask info java

или для версии AdoptOpenJDK:

brew cask info adoptopenjdk

6. Установите определенную версию JDK, такую ​​как java11, accepttopenjdk8, или просто java или accepttopenjdk для текущей. Например:

**brew cask install java**

**brew cask install java8**

**brew cask install java11**

Вы также можете использовать полный путь к более старым версиям:

brew cask install homebrew/cask-versions/java11

Eclipse Temurin является официальным преемником acceptopenjdk. Итак, по состоянию на май 2022 года я бы использовал следующее

      brew install --cask temurin8

Когда установка завершена, JDK 8 устанавливается в /Library/Java/JavaVirtualMachines/temurin-8.jdk

Проще всего скачать файл dmg со следующего сайта и установить его двойным щелчком мыши.

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

искать доступные JVM из домашнего каталога

ls -al /Library/Java/JavaVirtualMachines

и обновите.bash_profile с соответствующей версией

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_XXX.jdk./Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

и наконец

source ~/.bash_profile

Самый простой способ -

1) brew cask install java (No need to install cask separately it comes with brew)

2) java -version

java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)

PS - Что такое бочка? Homebrew-Cask расширяет возможности Homebrew и решает проблему выполнения дополнительной команды - "Чтобы установить, перетащите этот значок…" после установки приложения с помощью Homebrew.

По состоянию на2023,brew install --cask zulu8не работал у меня наAppleчип.brew install openjdk@8тоже не стал. Единственное решение, которое сработало для меня, былоbrew install --cask adoptopenjdk8а потом конечноvim ~/.zshrcсexport JAVAC_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/внутри этого файла.

Другие вопросы по тегам