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
Ответы
Ответ 1
Самый простой способ управлять несколькими версиями Java на Mac - это использовать Homebrew
.
А в Homebrew
используйте:
homebrew-cask
для установки версий Java
jenv
для управления установленными версиями 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) Built-in JRE default: /Library/Internet\
Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
2) JDKs downloaded from Apple: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/
3) JDKs downloaded from Oracle: /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home
Ресурсы
Ответ 2
Удалите 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)
Ответ 3
Для 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
Ответ 4
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
Ответ 5
Как найдено на этом сайте
Итак, начнем с установки 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.
Добавьте JDK в jEnv.
JDK 6:
JDK 7:
![http://javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518ab9bc47d4.png]()
JDK 8:
![http://javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518abb2c1217.png]()
Проверьте версии Java, установленные с помощью jenv
![http://javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518abceb0deb.png]()
Так что теперь у нас есть 3 версии Java в нашей системе. Чтобы установить версию по умолчанию, используйте команду
jenv local <jenv version>
Бывший - я хотел, чтобы Jdk 1.6 запустил IntelliJ
jenv local oracle64-1.6.0.65
проверить версию Java
Ява -version
![http://javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518abe376dd0.png]()
Это оно. Теперь у нас есть несколько версий Java, и мы можем легко переключаться между ними. jEnv также имеет некоторые другие функции, такие как оболочки для Gradle, Ant, Maven и т.д., а также возможность устанавливать параметры JVM глобально или локально. Проверьте документацию для получения дополнительной информации.
Ответ 6
Я недавно обнаружил этот менеджер версий Java под названием Jabba, и его использование очень похоже на использование менеджеров версий других языков, таких как rvm (ruby), nvm (node), pyenv (python) и т.д. безусловно, он может быть использован на Mac.
После установки он создаст каталог в ~/.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
Ответ 7
Я использую Mac OS X 10.9.5. Вот как я управляю несколькими JDK/JRE на моей машине, когда мне нужна одна версия для запуска приложения A и используйте другую версию для приложения B.
После получения некоторой помощи я создал следующий script.
#!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
Я помещаю вышеуказанный script в .profile файл. Просто откройте терминал, введите vi.profile, добавьте script с приведенным выше фрагментом и сохраните его. После вашего типа source .profile
, это запустит ваш профиль script, не перезагружая терминал. Теперь введите java -version
, чтобы он отображал 1.7 в качестве текущей версии. Если вы собираетесь изменить его на 1.8, прокомментируйте строку setjdk jdk1.7.0_15.jdk
и раскомментируйте строку setjdk jdk1.8.0_60.jdk
. Сохраните script и запустите его снова с помощью команды source. Я использую этот механизм для управления несколькими версиями JDK/JRE, когда мне приходится составлять 2 разных проекта Maven, которым нужны разные версии Java.
Ответ 8
Дженв на Mac Sierra:
если не работает после установки, выполните эту ошибку, чтобы добавить исполняемый файл java в путь
export PATH="$HOME/.jenv/shims:$PATH"
хотя eval "$(jenv init -)"
мог выполнять эту работу. Причина в том, что папка /bin больше не существует, как описано на ней на домашней странице, но вместо этого вместо этого используется папка с разделителем.
- Убедитесь, что ~/.jenv есть
-
which java
может печатать /Library/...
- jenv global 1.8
- jenv shell 1.8
В конце концов, which java
дает вам:
/Users/xxxx/.jenv/shims/java
Ответ 9
Здесь более СУХАЯ версия для 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
Ответ 10
С доморощенным и jenv:
Предположение: на компьютере Mac уже установлен домашний напиток.
Установить бочку:
$ brew tap caskroom/cask
$ brew tap caskroom/versions
Чтобы установить последнюю версию Java:
$ brew cask install java
Для установки Java 8:
$ brew cask install java8
Для установки Java 9:
$ brew cask install java9
Если вы хотите установить/управлять несколькими версиями, вы можете использовать "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