it-swarm.com.ru

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

221
Dakkar

Самый простой способ управлять несколькими версиями Java на Mac - это использовать Homebrew .

И в пределах Homebrew используйте:

  • homebrew-cask для установки версий Java
  • jenv для управления установленными версиями Java

Как видно на http://hanxue-it.blogspot.ch/2014/05/install-Java-8-managing-multiple.html , это следующие шаги.

  1. установить доморощенный
  2. установить доморощенный jenv
  3. установить доморощенный бочонок
  4. установить конкретную версию Java с помощью cask (см. параграф «версии homebrew-cask» ниже)
  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) Встроенный 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


Ресурсы

356
Adrien Be

Удалите 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)

227
Vegard

Для 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" в папку версии . ВНИМАНИЕ: Используйте фактические пути на вашем компьютере ... это всего лишь EXAMPLE

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
66
bob

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
32
Michael Easter

Как можно найти на этом сайте Итак, начнем с установки 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. Добавить JDKs в 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

    Java-версия  http://javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518abe376dd0.png

Это оно. Теперь у нас есть несколько версий Java, и мы можем легко переключаться между ними. jEnv также имеет некоторые другие функции, такие как оболочки для Gradle, Ant, Maven и т. д., а также возможность устанавливать параметры JVM глобально или локально. Проверьте документацию для получения дополнительной информации.

7
Dinesh Arora

Я нахожу этот менеджер версий 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
5
York Yang

Я использую 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.

4
ChaitanyaBhatt

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

3
CodeFarmer

Вот более DRY версия для 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
0
elad.chen