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
9 ответов
самый чистый способ управления несколькими версиями java на Mac-использовать Homebrew
.
и в Homebrew
использовать:
-
homebrew-cask
для установки версий java -
jenv
для управления установленными версиями java
как видно на http://hanxue-it.blogspot.ch/2014/05/installing-java-8-managing-multiple.html, эти шаги к следовать.
- установить homebrew
- установить homebrew jenv
- установить homebrew-cask
- установите определенную версию java с помощью cask (см. пункт "homebrew-cask versions" ниже)
- добавить эту версию для jenv, чтобы управлять им
- проверьте, что версия правильно управляется jenv
- повторите шаги с 4 по 6 для каждой версии java, которая вам нужна
самогон-бочки версии
добавить homebrew/cask-versions
нажмите на homebrew, используя:
brew tap homebrew/cask-versions
затем вы можете посмотреть все доступные версии:
brew search java
затем вы можете установить версии, которые вам нравятся:
brew cask install java7
brew cask install java6
и добавить их для управления дженв, как обычно.
jenv add <javaVersionPathHere>
Я думаю,что это самый чистый и простой способ сделать это.
еще одна важная вещь, чтобы отметить, как говорится в Mac OS X 10.6.7 Java Path текущий JDK запутанный :
для различных типов JDKs или установок, вы будете иметь различные пути
вы можете проверить пути установленных версий с помощью
/usr/libexec/java_home -V
см. Как проверить, установлен ли Java JDK на Mac?на Mac OS X Mavericks я нашел следующее:
1) встроенный JRE по умолчанию:
/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
2) JDKs, загруженные из Apple:
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/
3) JDKs, загруженные из Oracle:
/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home
ресурсы
- удаление Java 8 JDK из Мак!--15-->
- 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#readme
- 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.
мой подход к переключению между ними (в .профиль) :
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
в терминале для переключения версий.
(edit: обновлено, чтобы добавить улучшение Dylans для Java 9)
для macOS Sierra 420
это руководство было собрано из различных источников (ответы выше, а также другие сообщения) и работает отлично.
0. Если вы еще этого не сделали, установите homebrew.
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 / версии"
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
7. Обзор Установок
вся версия Java устанавливается здесь:/Library/Java/JavaVirtualMachines
давайте посмотрим.
ls -la /Library/Java/JavaVirtualMachines
8. Добавьте каждый путь к jenv по одному.
нам нужно добавить "/ Contents / Home"в папку версии. Внимание: используйте фактические пути на вашем компьютере... эти просто пример ' s
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 OK
jenv versions
10. Набор Java-версии для использования (globably)
где 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. Установка и использование doc находятся на основном сайте.
(у меня нет принадлежности, просто счастливый пользователь).
в качестве примера использования, если я набираю следующее В окне терминала, есть список доступных версий Java SDK (отредактированных для краткости):
$ sdk list java
Available Java Versions
+ 9ea170
> + 8u131
7u141-zulu
здесь +
- означает, что установленная версия. >
обозначает, какая версия в настоящее время используется. Чтобы установить версию:
$ sdk install java 7u141-zulu
чтобы использовать версию в этом окне терминала:
$ sdk use java 9ea170
как найти на это сайт Итак, давайте начнем с установки 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) в системе. The
*
показывает выбранную версию. В отличие от 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>
Ex-я хотел, чтобы Jdk 1.6 запустил IntelliJ
jenv local oracle64-1.6.0.65
-
проверьте версию java
вот и все. Теперь у нас есть несколько версий Java и мы можем легко переключаться между ними. jEnv также имеет некоторые другие функции, такие как обертки для Gradle, Ant, Maven и т. д., а также возможность устанавливать параметры JVM глобально или локально. Ознакомьтесь с документацией для подробная информация.
я использую 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//Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
fi
}
function removeFromPath() {
export PATH=$(echo $PATH | sed -E -e "s;:;;" -e "s;:?;;")
}
#setjdk jdk1.8.0_60.jdk
setjdk jdk1.7.0_15.jdk
я вставил приведенный выше сценарий .файл профиля. Просто откройте терминал, тип vi .профиль, добавьте скрипт с вышеуказанным фрагментом и сохраните его. После того, как ваш тип out 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 под названием Джабба в последнее время и использование очень похоже на менеджеров версий других языков, таких как rvm(ruby), nvm(node), pyenv(python) и т. д. Также это кросс-платформа, поэтому она определенно может использоваться на Mac.
после установки он создаст dir в~/.Джабба поставить все версии 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
Jenv на Mac Sierra:
если не работает после установки, исправьте эту ошибку, чтобы добавить исполняемый файл java в path
export PATH="$HOME/.jenv/shims:$PATH"
хотя eval "$(jenv init -)"
может выполнить эту работу. Причина в том, что папка /bin больше не существует, как описано на главной странице, но папка shim используется как /bin.
- убедитесь, что ~/.дженв там
-
which java
может печатать /библиотека/... - jenv global 1.8
- jenv shell 1.8
в итоге which java
дает вам:
/ пользователи / xxxx/.jenv/shims / java
вот более сухая версия для 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