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, эти шаги к следовать.

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


ресурсы


удалите 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.

см.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 / версии"

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

  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) в системе. The * показывает выбранную версию. В отличие от 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>
    

    Ex-я хотел, чтобы 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 глобально или локально. Ознакомьтесь с документацией для подробная информация.


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