Mac OS X и несколько версий Java
Как я могу установить дополнительную Java на MacOS? Я установил JDK8, и это прекрасно работает. но теперь мне нужна установка jdk7 для целей разработки. При попытке установить старую версию через файл DMG, я получаю предупреждение, что уже установлена более новая версия java и программа установки завершает работу.
/usr/libexec/java_home -verbose
Matching Java Virtual Machines (1):
1.8.0_20, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home
Как установить jdk7 в дополнение к этому?
Спасибо
Dakky
22 ответа
Самый простой способ управлять несколькими версиями Java на Mac - это использовать Homebrew
,
А внутри Homebrew
, используйте:
homebrew-cask
установить версии javajenv
управлять установленными версиями Java
Как видно на http://hanxue-it.blogspot.ch/2014/05/installing-java-8-managing-multiple.html, это следующие шаги.
- установить доморощенный
- установить доморощенный jenv
- установить доморощенный бочонок
- установить конкретную версию Java с помощью cask (см. параграф "homebrew-cask version" ниже)
- добавить эту версию для jenv, чтобы управлять им
- проверьте правильность управления версией jenv
- повторите шаги с 4 по 6 для каждой версии Java, которая вам нужна
версии для домашних бочек
Добавить homebrew/cask-versions
нажмите, чтобы доморощить, используя:
brew tap homebrew/cask-versions
Затем вы можете посмотреть все доступные версии:
brew search java
Затем вы можете установить понравившуюся вам версию (ы):
brew cask install java7
brew cask install java6
И добавьте их, чтобы Jenv управлял как обычно.
jenv add <javaVersionPathHere>
Я думаю, что это самый чистый и простой способ сделать это.
Еще одна важная вещь, которую стоит отметить, как уже упоминалось в Mac OS X 10.6.7 Java Path Current JDK сбивает с толку:
Для разных типов JDK или установок у вас будут разные пути
Вы можете проверить пути версий, установленных с помощью
/usr/libexec/java_home -V
См. Как проверить, установлен ли Java JDK на Mac?На Mac OS X Mavericks я обнаружил следующее:
1) Встроенный JRE по умолчанию:
/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
2) JDK, загруженные с Apple:
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/
3) JDK, загруженные из Oracle:
/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home
Ресурсы
- Удаление Java 8 JDK с Mac
- http://hanxue-it.blogspot.ch/2014/05/installing-java-8-managing-multiple.html
- http://sourabhbajaj.com/mac-setup/index.html
- http://brew.sh/
- https://github.com/Homebrew/homebrew/tree/master/share/doc/homebrew
- http://sourabhbajaj.com/mac-setup/Homebrew/README.html
- объяснение "варка под крана" https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/brew-tap.md
- "Варианты варки" объяснил Homebrew установить конкретную версию формулы? а также https://github.com/Homebrew/homebrew-versions
- https://github.com/caskroom/homebrew-cask
- "Бочковые версии", аналогично "варочным версиям", см. https://github.com/caskroom/homebrew-versions а также https://github.com/caskroom/homebrew-cask/issues/9447
- http://www.jenv.be/
- https://github.com/gcuisinier/jenv
Удалите jdk8, установите jdk7, затем переустановите jdk8.
Мой подход к переключению между ними (в.profile):
export JAVA_7_HOME=$(/usr/libexec/java_home -v1.7)
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_9_HOME=$(/usr/libexec/java_home -v9)
alias java7='export JAVA_HOME=$JAVA_7_HOME'
alias java8='export JAVA_HOME=$JAVA_8_HOME'
alias java9='export JAVA_HOME=$JAVA_9_HOME'
#default java8
export JAVA_HOME=$JAVA_8_HOME
Тогда вы можете просто напечатать java7
или же java8
в терминале переключать версии.
(редактировать: обновлено, чтобы добавить улучшение Dylans для Java 9)
Для macOS Sierra 420
Это руководство было собрано из разных источников (ответы выше, а также из других постов), и работает отлично.
0. Если вы еще этого не сделали, установите homebrew.
Смотрите https://brew.sh/
1. Установите jenv
brew install jenv
2. Добавьте jenv в профиль bash.
if which jenv > /dev/null; then eval "$(jenv init -)"; fi
3. Добавьте jenv на свой путь
export PATH="$HOME/.jenv/shims:$PATH"
4. Нажмите "Caskroom/ версии"
К вашему сведению: "Tap" расширяет список доступных репозиториев brew, которые могут быть установлены за пределы списка доступных репозиториев brew по умолчанию.
brew tap caskroom/versions
5. Установите последнюю версию Java
brew cask install java
6. Установите Java 6 (или 7 или 8, что вам нужно)
brew cask install java6
#brew cask install java7
#brew cask install java8
? Может быть, закройте и перезапустите Терминал, чтобы он увидел все новые установки ENV, которые были настроены.
7. Просмотр установок
Все версии Java устанавливаются здесь: /Library/Java/JavaVirtualMachines
Давайте взглянем.
ls -la /Library/Java/JavaVirtualMachines
8. Добавьте каждый путь к jenv по одному.
Нам нужно добавить "/Contents/Home" в папку версии. ВНИМАНИЕ: Используйте фактические пути на вашем компьютере... это просто ПРИМЕРЫ
jenv add /Library/Java/JavaVirtualMachines/1.6.0___EXAMPLE___/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk___EXAMPLE___/Contents/Home
9. Проверьте, зарегистрирован ли jenv в порядке
jenv versions
10. Установите версию Java для использования (глобально)
Где XX соответствует одному из пунктов в списке версий выше.
jenv global XX
Проверьте версию Java
java -version
Проверьте версии jenv
Следует также указать текущую версию, используемую со звездочкой.
jenv versions
СДЕЛАННЫЙ
Быстрая будущая ссылка
Чтобы изменить версии Java
... Смотрите список доступных версий Java
jenv versions
... тогда, где XX соответствует элемент в списке выше
jenv global XX
SDKMAN! это отличный инструмент для использования нескольких версий Java, Gradle, Groovy, Kotlin и других инструментов JVM в Mac OS. Документация по установке и использованию находится прямо на главном сайте.
(У меня нет принадлежности, просто счастливый пользователь).
В качестве примера использования, если я введу следующее в окне терминала, появится список доступных версий Java SDK (отредактировано для краткости):
$ sdk list java
Available Java Versions
+ 9ea170
> + 8u131
7u141-zulu
Вот +
обозначает, что версия установлена. >
обозначает, какая версия используется в данный момент. Чтобы установить версию:
$ sdk install java 7u141-zulu
Чтобы использовать версию в этом окне терминала:
$ sdk use java 9ea170
Во-первых, вам нужно убедиться, что у вас установлено несколько версий JAVA. Откройте новое окно терминала и введите:
/usr/libexec/java_home -V
Ваш результат должен выглядеть так:
Matching Java Virtual Machines (2):
11.0.1, x86_64: "Java SE 11.0.1" /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home
1.8.0_201, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home
Обратите внимание, что доступно два JDK. Если вы не заметили версию Java, на которую нужно переключиться, загрузите и установите соответствующую версию отсюда (JDK 8 представлен как 1.8). После установки соответствующего JDK повторите этот шаг.
Обратите внимание на версию JDK, на которую вы хотите переключиться. Например, «11.0» и «1.8» - это версии JDK, доступные в приведенном выше примере.
Переключитесь на желаемую версию. Например, если вы хотите переключиться на JDK 8, введите следующую строку:
экспорт JAVA_HOME=
/usr/libexec/java_home -v 1.8
Для 11.0 переключите «1.8» на «11.0» 4. Проверьте версию JDK, введя в Терминал:
java -version
Если вы выполнили все шаги правильно, версия JDK должна соответствовать той, которую вы указали на последнем шаге. 5. (Необязательно) Чтобы сделать это версией JDK по умолчанию, введите в Терминал следующее:
open ~/.bash_profile
Затем добавьте в этот файл входные данные Терминала из шага 3:
ПЕРЕЙТИ НА ВЕРСИЮ JAVA 8
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
Сохраните и закройте файл.
В том же духе, что и @Vegard (легкий):
- Установите желаемые JDK с помощью Homebrew
Положи это
jdk
bash и значение по умолчанию в вашем.profile
jdk() { version=$1 export JAVA_HOME=$(/usr/libexec/java_home -v"$version"); java -version } export JAVA_HOME=$(/usr/libexec/java_home -v11); # Your default version
а затем, чтобы переключить свой jdk, вы можете сделать
jdk 9 jdk 11 jdk 13
Как найдено на этом сайте, так что давайте начнем с установки jEnv
Запустите это в терминале
brew install https://raw.github.com/gcuisinier/jenv/homebrew/jenv.rb
Добавить jEnv в профиль bash
if which jenv > /dev/null; then eval "$(jenv init -)"; fi
При первой установке jEnv не будет иметь никаких JDK, связанных с ним.
Например, я только что установил JDK 8, но jEnv не знает об этом. Чтобы проверить версии Java на jEnv
На данный момент в системе обнаружена только версия Java (jre).
*
показывает версию, выбранную в данный момент. В отличие от rvm и rbenv, jEnv не может установить JDK для вас. Вам необходимо установить JDK вручную с веб-сайта Oracle.Установите JDK 6 с веб-сайта Apple. Это установит Java в
/System/Library/Java/JavaVirtualMachines/
, Причина, по которой мы устанавливаем Java 6 с веб-сайта Apple, заключается в том, что SUN не придумала JDK 6 для MAC, поэтому Apple создала / изменила собственную версию развертывания.Аналогичным образом установите JDK7 и JDK8.
Добавить JDKs в jEnv.
JDK 6:
Проверьте версии Java, установленные с помощью jenv
Так что теперь у нас есть 3 версии Java в нашей системе. Чтобы установить версию по умолчанию, используйте команду
jenv local <jenv version>
Я хотел, чтобы JDK 1.6 запустил IntelliJ
jenv local oracle64-1.6.0.65
проверьте версию Java
Вот и все. Теперь у нас есть несколько версий Java, и мы можем легко переключаться между ними. jEnv также имеет некоторые другие функции, такие как оболочки для Gradle, Ant, Maven и т. д., а также возможность устанавливать параметры JVM глобально или локально. Проверьте документацию для получения дополнительной информации.
Управление несколькими версиями Java в MAC с помощью jenv
- Установите homebrew, используя следующую команду
/ bin / bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
- установить jenv и активировать jenv
варить установить Jenv
echo 'eval "$(jenv init -)"' >> ~ / .bash_profile
- кран-бочонки
пивоваренный кран для домашнего пивоварения / бочонка
- поиск доступной версии java, которую можно установить
варить поиск java
- Например, для установки java6 используйте следующую команду
варить установить cask java6
- Добавить несколько версий java в jenv
jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Примечание. - если вы получите ошибку типа «» ln: /Users//.jenv/versions/oracle64-1.8.0.231: нет такого файла или каталога, выполните следующее:-
mkdir -p / Пользователи//.jenv/versions/oracle64-1.8.0.231
- Перефразируйте jenv после добавления jdk
Jenv Rehash
- Список известных версий java для jenv
версии jenv
- Установить версию по умолчанию
jenv global oracle64-1.8.0.231
- Изменить версию java для проекта
локальный оракул jenv64-1.6.0.65
- установите JAVA_HOME с той же версией, что и jenv
jenv exec bash
эхо $JAVA_HOME
Я недавно нашел этот менеджер версий Java под названием Jabba, и его использование очень похоже на менеджеры версий других языков, таких как rvm (ruby), nvm (node), pyenv (python) и т. Д. Кроме того, он кроссплатформенный, поэтому его можно использовать на макинтош
После установки он создаст каталог в ~/.jabba для размещения всех версий Java, которые вы устанавливаете. Он "поддерживает установку Oracle JDK (по умолчанию) / Server JRE, Zulu OpenJDK (начиная с 0.3.0), IBM SDK, Java Technology Edition (начиная с 0.6.0) и с пользовательских URL-адресов".
Основное использование указано на их Github. Краткое резюме для начала:
curl -sL https://github.com/shyiko/jabba/raw/master/install.sh | bash && . ~/.jabba/jabba.sh
# install Oracle JDK
jabba install 1.8 # "jabba use 1.8" will be called automatically
jabba install 1.7 # "jabba use 1.7" will be called automatically
# list all installed JDK's
jabba ls
# switch to a different version of JDK
jabba use 1.8
Я знаю, что на этот вопрос уже есть много ответов, но я хочу поделиться своим решением только с использованием Темурина и Баша.
AdoptOpenJdk устарел, поэтому я использую Temurin.
1. Загрузите Temurin с помощью зеркал или менеджера пакетов.
$ brew install --cask temurin
И для других версий (например, Java 8):
$ brew tap homebrew/cask-versions
$ brew install --cask temurin8
2. Добавьте скрипт bash в свой профиль bash
Откройте свой
~/.zshrc
или же
~/.bash_profile
(в зависимости от того, что вы используете)
И добавьте этот код:
set-jdk() {
jdkversion=$1
export JAVA_HOME=/Library/Java/JavaVirtualMachines/temurin-"$jdkversion".jdk/Contents/Home;
export PATH=$PATH:$JAVA_HOME/bin;
java -version
}
3. Перезапустите терминал и измените версию Java.
$ set-jdk N
N — это версия Java, которую вы хотите, и она уже установлена
например
$ set-jdk 8
Чтобы перейти на Java 8 / 1.8
Несколько соображений:
- Он сохранит только версию Java в сеансе терминала, который вы использовали.
set-jdk
команда - Он не будет устанавливать версию Java как глобальную
- Если вы хотите добавить JAVA_HOME в другой скрипт/приложение, вы можете установить
/Library/Java/JavaVirtualMachines/temurin-<version>.jdk/Contents/Home
(измените на желаемую версию Java. Как этот пример JD-GUI )
Наслаждаться
По состоянию на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/
export JAVA_11_HOME=$(/usr/libexec/java_home -v11)
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
alias javac8='export JAVA_HOME=$JAVAC_HOME'
alias java11='export JAVA_HOME=$JAVA_11_HOME'
alias java8='export JAVA_HOME=$JAVA_8_HOME'
переключиться с терминала с помощьюjavac8
на свежеустановленную (другую) версию. Примечание: у вас могут быть разныеJava
версий, чем у меня, так что это просто пример.
Редактировать: по какой-то причине после активации требуется некоторое время. Мне кажется нужна перезагрузка ноутбука.
Я отвечаю в последнее время и настоятельно рекомендую вам использовать SDKMAN вместо Homebrew.
С помощью SDKMAN вы можете легко установить другую версию JAVA на свой Mac и переключаться с одной версии на другую.
Вы также можете использовать SDKMAN для ANT, GRADLE, KOTLIN, MAVEN, SCALA и т. Д.
Чтобы установить версию на свой Mac, вы можете запустить команду sdk install java 15.0.0.j9-adpt
Jenv на Mac Сьерра:
если после установки не работает, исправьте эту ошибку, чтобы добавить исполняемый файл Java в путь
export PATH="$HOME/.jenv/shims:$PATH"
даже если eval "$(jenv init -)"
мог бы сделать эту работу. Причина в том, что папка / bin больше не существует, как описано на домашней странице, но вместо этого папка shim используется как / bin.
- Убедитесь, что ~ /.jenv есть
which java
может распечатать / Библиотека /...- jenv global 1.8
- jenv shell 1.8
В конце концов, which java
дает тебе:
/Users/xxxx/.jenv/shims/java
Я использую Mac OS X 10.9.5. Вот как я управляю несколькими JDK/JRE на своем компьютере, когда мне нужна одна версия для запуска приложения A и использование другой версии для приложения B.
Я создал следующий скрипт после получения помощи онлайн.
#!bin/sh
function setjdk() {
if [ $# -ne 0 ]; then
removeFromPath '/Library/Java/JavaVirtualMachines/'
if [ -n "${JAVA_HOME+x}" ]; then
removeFromPath $JAVA_HOME
fi
export JAVA_HOME=/Library/Java/JavaVirtualMachines/$1/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
fi
}
function removeFromPath() {
export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
}
#setjdk jdk1.8.0_60.jdk
setjdk jdk1.7.0_15.jdk
Я положил вышеупомянутый скрипт в файл.profile. Просто откройте терминал, введите vi.profile, добавьте скрипт с приведенным выше фрагментом и сохраните его. После того, как ваш тип source .profile
, это запустит скрипт вашего профиля без перезагрузки терминала. Сейчас типа java -version
он должен показывать 1.7 в качестве текущей версии. Если вы намереваетесь изменить его на 1.8, тогда прокомментируйте строку setjdk jdk1.7.0_15.jdk
и раскомментируйте строку setjdk jdk1.8.0_60.jdk
, Сохраните скрипт и запустите его снова с помощью команды source. Я использую этот механизм для управления несколькими версиями JDK/JRE, когда мне нужно скомпилировать 2 разных проекта Maven, для которых нужны разные версии Java.
Новые команды для установки Java через Homebrew:
-
brew cask install adoptopenjdk/openjdk/adoptopenjdk8
-
brew cask install adoptopenjdk/openjdk/adoptopenjdk11
См доморощенного-OpenJDK репо для последних команд.
Установка Java
Вы можете установить Java через Homebrew, Jabba, SDKMAN или вручную. См. Этот ответ для получения подробной информации обо всех командах.
Смена версии Java *
Вы можете переключать версии Java с помощью jenv Jabba, SDKMAN или вручную. Подробную информацию обо всех командах переключения см. Здесь.
Лучшие решения
- Jabba разработан для работы на нескольких платформах, поэтому это хороший вариант, если вам нужно решение, которое также будет работать на Windows.
- Использование Homebrew для загрузки версий Java и jenv для переключения версий обеспечивает удобный рабочий процесс. jenv упрощает работу с версиями Java, хранящимися в любом каталоге на вашем компьютере, поэтому это хорошая альтернатива, если вы заинтересованы в хранении Java в каталогах, отличных от стандартных.
- Использование SDKMAN для загрузки Javas и переключения версий - еще одна отличная альтернатива
- Следует избегать переключения вручную, потому что это лишняя головная боль.
Функция ручного переключения версий Java
Вот функция Bash / ZSH для ручного переключения версий Java (с помощью OpenJDK):
jdk() {
version=$1
export JAVA_HOME=$(/usr/libexec/java_home -v"$version");
java -version
}
Есть отличные инструменты для переключения версий Java, поэтому я настоятельно не рекомендую делать это вручную.
Я решил эту ошибку на своем mac m1 air, просто добавив путь к новой версии jdk в файл ~/.zshrc.
У меня есть несколько jdks в моем/Library/Java/JavaVirtualMachines
путь. Таким образом, я могу выбрать любую версию, которую хочу установить в качестве пути Java по умолчанию.
Чтобы найти доступные версии Java:
brew search java
Чтобы установить последнюю стабильную версию (19 на сегодняшний день):
brew info java
brew install java
Чтобы системные оболочки Java (например, IDE) могли найти последнюю версию JDK, создайте символическую ссылку на нее с помощью:
sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
Чтобы установить конкретную версию (11):
brew install java11
Для системы обертки Java, чтобы найти JDK 11:
sudo ln -sfn /opt/homebrew/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk
У вас может быть одна из версий OpenJDK в вашем PATH. Добавьте одну из следующих строк в ваш ~/.bash_profile
export PATH="/opt/homebrew/opt/openjdk/bin:$PATH
export PATH="/opt/homebrew/opt/openjdk@11/bin:$PATH
Затем,
source ~/.bash_profile
Если вы хотите сохранить несколько версий JDK (уже установленных) в Mac M1, чтобы легко переключаться между ними, добавьте следующие строки в файл ~/.zshrc.
alias jdk11="export JAVA_HOME=`/usr/libexec/java_home -v 11`; java -version"
alias jdk8="export JAVA_HOME=`/usr/libexec/java_home -v 1.8`; java -version"
Теперь их можно легко переключать, как показано ниже.
% ~
: jdk8
openjdk version "1.8.0_382"
OpenJDK Runtime Environment (Zulu 8.72.0.17-CA-macos-aarch64) (build 1.8.0_382-b05)
OpenJDK 64-Bit Server VM (Zulu 8.72.0.17-CA-macos-aarch64) (build 25.382-b05, mixed mode)
% ~
: java -version
openjdk version "1.8.0_382"
OpenJDK Runtime Environment (Zulu 8.72.0.17-CA-macos-aarch64) (build 1.8.0_382-b05)
OpenJDK 64-Bit Server VM (Zulu 8.72.0.17-CA-macos-aarch64) (build 25.382-b05, mixed mode)
% ~
:
% ~
: jdk11
openjdk version "11.0.15" 2022-04-19 LTS
OpenJDK Runtime Environment Corretto-11.0.15.9.1 (build 11.0.15+9-LTS)
OpenJDK 64-Bit Server VM Corretto-11.0.15.9.1 (build 11.0.15+9-LTS, mixed mode)
% ~
: java -version
openjdk version "11.0.15" 2022-04-19 LTS
Вот отличный учебник https://medium.com/@chamikakasun/how-to-manage-multiple-java-version-in-macos-e5421345f6d0 с использованием jEnv, установленного brew
или вы можете проверить управляющую версию homebrew-openjdkhttps://github.com/AdoptOpenJDK/homebrew-openjdk, используя brew Tap
Вот более сухая версия для bash (на основании ответа Вегарда)
Замените 1.7 и 1.8 на те версии, которые вас интересуют, и вы получите псевдоним javaX; где "X" - это Java-версия (7 / 8 в фрагменте ниже), которая позволит вам легко переключать версии
for version in 1.7 1.8; do
v="${version: -1}"
h=JAVA_"$v"_HOME
export "$h"=$(/usr/libexec/java_home -v $version)
alias "java$v"="export JAVA_HOME=\$$h"
done
Я выполнил шаги по ссылке ниже - https://medium.com/@euedofia/fix-default-java-version-on-maven-on-mac-os-x-156cf5930078, и это сработало для меня.
cd /usr/local/Cellar/maven/3.5.4/bin/
nano mvn
--Update JAVA_HOME -> "${JAVA_HOME:-$(/usr/libexec/java_home)}"
mvn -version
Я использую это, чтобы установить более свежие версии OpenJDK. Пример для OpenJDK 14:
brew info adoptopenjdk
brew tap adoptopenjdk/openjdk
brew cask install adoptopenjdk14
См. https://github.com/AdoptOpenJDK/homebrew-openjdk для получения актуальной информации.