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, это следующие шаги.

  1. установить доморощенный
  2. установить доморощенный jenv
  3. установить доморощенный бочонок
  4. установить конкретную версию Java с помощью cask (см. параграф "homebrew-cask version" ниже)
  5. добавить эту версию для jenv, чтобы управлять им
  6. проверьте правильность управления версией jenv
  7. повторите шаги с 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

  1. Запустите это в терминале

    brew install https://raw.github.com/gcuisinier/jenv/homebrew/jenv.rb
    
  2. Добавьте jEnv в профиль bash

    if which jenv > /dev/null; then eval "$(jenv init -)"; fi
    
  3. При первой установке jEnv не будет иметь никакого связанного с ним JDK.

    Например, я только что установил JDK 8, но jEnv не знает об этом. Чтобы проверить версии Java на jEnv

    На данный момент в системе обнаружена только версия Java (jre). * показывает выбранную версию. В отличие от rvm и rbenv, jEnv не может установить JDK для вас. Вам необходимо установить JDK вручную с веб-сайта Oracle.

  4. Установите JDK 6 с веб-сайта Apple. Это установит Java в /System/Library/Java/JavaVirtualMachines/. Причина, по которой мы устанавливаем Java 6 с веб-сайта Apple, заключается в том, что SUN не придумала JDK 6 для MAC, поэтому Apple создала/изменила свою версию развертывания.

  5. Аналогичным образом установите JDK7 и JDK8.

  6. Добавьте 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

  7. Проверьте версии Java, установленные с помощью jenv

    http://javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518abceb0deb.png

  8. Так что теперь у нас есть 3 версии Java в нашей системе. Чтобы установить версию по умолчанию, используйте команду

    jenv local <jenv version>
    

    Бывший - я хотел, чтобы Jdk 1.6 запустил IntelliJ

    jenv local oracle64-1.6.0.65
    
  9. проверить версию 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