Как установить 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 на вашем компьютере разработчика!
Преимущества:
- Нет необходимости устанавливать какую-либо версию Java на локальном компьютере (вы просто запустите Java в контейнере, который вы извлекаете из Docker Hub)
- Очень легко переключаться на разные версии Java, просто меняя тег на контейнере.
- Зависимости проекта устанавливаются внутри контейнера - так что, если вы испортили свою конфигурацию, вы можете просто сбросить ядро на контейнере и начать заново.
Очень простой пример:
Создать 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
Отказ от ответственности:
- Я действительно не пробовал это в среде IDE, такой как IntelliJ, поэтому не совсем уверен, как этот аспект будет работать. Хотя похоже, что поддержка докеров идет
- Вот значительно более сложный пример работы Microservices с Spring Boot, Zuul и Docker.
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.
- Вы можете найти полезное руководство здесь, Руководство по установке Homebrew Cask. Не забудьте нажать "Caskroom/ версии", работающие в терминале:
brew tap caskroom/versions
- После этого установите jenv с помощью:
brew install jenv
- Установите любую версию с бочкой
brew cask install java8
(или жеjava7
или жеjava
если вы хотите установить последнюю версию, jdk9) - Последний шаг - настроить, какую версию запустить (и позволить 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)
```
на 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
Если вы используете его НЕ для личного использования, вы можете вместо этого использовать 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 :
- Перейдите на https://profile.oracle.com/myprofile/account/create-account.jspx и зарегистрируйтесь, если еще не сделали этого;
- Перейдите на https://www.oracle.com/java/technologies/downloads/#jdk17-mac.
- Выберите «Java 8»;
- Выберите «macOS»;
- Нажмите "jdk-8u301-macosx-x64.dmg";
- Установите флажок;
- Нажмите «Скачать jdk-8u301-macosx-x64.dmg»;
- Откройте скачанный файл;
- Следуйте руководству по установке;
Наслаждайтесь =)
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/
внутри этого файла.