mac os x и несколько версий java

<p>как я могу установить дополнительную java на macos? я установил jdk8, и это прекрасно работает. но теперь мне нужна установка jdk7 для целей разработки. при попытке установить старую версию через файл dmg, я получаю предупреждение, что уже установлена более новая версия java, и установщик завершает работу. </p><pre><code>/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 </code></pre><p>как установить jdk7 в дополнение к этому?</p><p>спасибо<br> dakky</p>

<p>самый простой способ управлять несколькими версиями java на mac - это использовать <a href="http://brew.sh"><code>homebrew</code></a> .</p><p>и в пределах <code>homebrew</code> используйте:</p><ul> <li><code>homebrew-cask</code> для установки версий java</li> <li><code>jenv</code> для управления установленными версиями java</li> </ul><hr><p>как видно на <a href="http://hanxue-it.blogspot.ch/2014/05/installing-java-8-managing-multiple.html">http://hanxue-it.blogspot.ch/2014/05/install-java-8-managing-multiple.html</a> , это следующие шаги.</p><ol> <li>установить доморощенный</li> <li>установить доморощенный jenv</li> <li>установить доморощенный бочонок</li> <li>установить конкретную версию java с помощью cask (см. параграф «версии homebrew-cask» ниже)</li> <li>добавить эту версию для jenv, чтобы управлять им</li> <li>проверьте правильность управления версией jenv</li> <li>повторите шаги с 4 по 6 для каждой необходимой вам версии java</li> </ol><hr><h3>версии для домашних бочек</h3><p>добавьте <a href="https://github.com/homebrew/homebrew-cask-versions"><code>homebrew/cask-versions</code></a> коснитесь к домашнему пиву, используя:</p><pre><code>brew tap homebrew/cask-versions </code></pre><p>затем вы можете посмотреть все доступные версии:</p><pre><code>brew search java </code></pre><p>затем вы можете установить понравившуюся вам версию (ы):</p><pre><code>brew cask install java7 brew cask install java6 </code></pre><p>и добавьте их, чтобы jenv управлял как обычно.</p><pre><code>jenv add <javaversionpathhere> </code></pre><p>я думаю, что это самый чистый и простой способ сделать это.</p><hr><p>еще одна важная вещь, о которой следует упомянуть, как упомянуто в <a href="https://stackoverflow.com/questions/6141180/mac-os-x-10-6-7-java-path-current-jdk-confusing/24792251#24792251">mac os x 10.6.7 java path current jdk путает</a> :</p><blockquote> <p>для разных типов jdk или инсталляций у вас будут разные пути</p> <p>вы можете проверить пути версий, установленных с помощью <code>/usr/libexec/java\_home -v</code>, см. <a href="https://stackoverflow.com/questions/14292698/how-do-i-check-if-the-java-jdk-is-installed-on-mac">как проверить, установлен ли java jdk на mac?</a> </p> <p>на mac os x mavericks я обнаружил следующее:</p> <p>1) встроенный jre по умолчанию: <code>/library/internet\ plug-ins/javaappletplugin.plugin/contents/home</code></p> <p>2) jdk, загруженные с apple: <code>/system/library/java/javavirtualmachines/1.6.0.jdk/contents/home/</code></p> <p>3) jdk, загруженные из oracle: <code>/library/java/javavirtualmachines/jdk1.8.0\_11.jdk/contents/home</code></p> </blockquote><hr><h3>ресурсы</h3><ul> <li> <a href="https://stackoverflow.com/questions/19039752/removing-java-8-jdk-from-mac">удаление java 8 jdk с mac</a> </li> <li> <a href="http://hanxue-it.blogspot.ch/2014/05/installing-java-8-managing-multiple.html">http://hanxue-it.blogspot.ch/2014/05/install-java-8-managing-multiple.html</a> </li> <li> <a href="http://sourabhbajaj.com/mac-setup/index.html">http://sourabhbajaj.com/mac-setup/index.html</a> </li> <li> <a href="http://brew.sh">http://brew.sh</a> </li> <li> <a href="https://github.com/homebrew/homebrew/tree/master/share/doc/homebrew#readme">https://github.com/homebrew/homebrew/tree/master/share/doc/homebrew#readme</a> </li> <li> <a href="http://sourabhbajaj.com/mac-setup/homebrew/readme.html">http://sourabhbajaj.com/mac-setup/homebrew/readme.html</a> </li> <li>объяснение «варка крана» <a href="https://github.com/homebrew/homebrew/blob/master/share/doc/homebrew/brew-tap.md">https://github.com/homebrew/homebrew/blob/master/share/doc/homebrew/brew-tap.md</a> </li> <li>«варианты варки» объяснил <a href="https://stackoverflow.com/questions/3987683/homebrew-install-specific-version-of-formula">homebrew установить конкретную версию формулы?</a> а также <a href="https://github.com/homebrew/homebrew-versions">https://github.com/homebrew/homebrew-versions</a> </li> <li> <a href="https://github.com/caskroom/homebrew-cask">https://github.com/caskroom/homebrew-cask</a> </li> <li>«бочковые версии», аналогичные «варочным версиям», см. <a href="https://github.com/caskroom/homebrew-versions">https://github.com/caskroom/homebrew-versions</a> а также <a href="https://github.com/caskroom/homebrew-cask/issues/9447">https://github.com/caskroom/homebrew-cask/issues/ 9447</a> </li> <li> <a href="http://www.jenv.be">http://www.jenv.be</a> </li> <li> <a href="https://github.com/gcuisinier/jenv">https://github.com/gcuisinier/jenv</a> </li> </ul>

<p>удалите jdk8, установите jdk7, затем переустановите jdk8.</p><p>мой подход к переключению между ними (в .profile):</p><pre><code>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)

для macos sierra 420это руководство было собрано из разных источников (ответы выше, а также из других постов), и работает отлично.0. если вы еще этого не сделали, установите homebrew.смотрите <a href="https://brew.sh/">https://brew.sh/ 1. установите jenvbrew install jenv 2. добавьте jenv в профиль bash.if which jenv > /dev/null; then eval "$(jenv init -)"; fi </code></pre><h3>3. добавьте jenv на свой путь</h3><pre><code>export path="$home/.jenv/shims:$path" </code></pre><h3>4. нажмите «caskroom/версии»</h3><p>к вашему сведению: «tap» расширяет список доступных репозиториев brew, которые могут быть установлены за пределы списка доступных репозиториев brew по умолчанию.</p><pre><code>brew tap caskroom/versions </code></pre><h3>5. установите последнюю версию java</h3><pre><code>brew cask install java </code></pre><h3>6. установите java 6 (или 7 или 8, что вам нужно)</h3><pre><code>brew cask install java6 #brew cask install java7 #brew cask install java8 </code></pre><p>? может быть, закройте и перезапустите терминал, чтобы он увидел все новые установки env, которые были настроены.</p><h3>7. просмотр установок</h3><p>все версии java устанавливаются здесь: <code>/library/java/javavirtualmachines</code> давайте посмотрим.</p><pre><code>ls -la /library/java/javavirtualmachines </code></pre><h3>8. добавьте каждый путь к jenv по одному.</h3><p>нам нужно добавить "/ contents/home" в папку версии . внимание: используйте фактические пути на вашем компьютере ... это всего лишь <strong><em>example</em></strong></p><pre><code>jenv add /library/java/javavirtualmachines/1.6.0\_\_\_example\_\_\_/contents/home jenv add /library/java/javavirtualmachines/jdk-9.0.1.jdk\_\_\_example\_\_\_/contents/home </code></pre><h3>9. проверьте, зарегистрирован ли jenv в порядке</h3><pre><code>jenv versions </code></pre><h3>10. установите версию java для использования (глобально)</h3><p>где xx соответствует одному из пунктов в списке версий выше.</p><pre><code>jenv global xx </code></pre><h3>проверьте версию java</h3><pre><code>java -version </code></pre><h3>проверьте версии jenv</h3><p>следует также указать текущую версию, используемую со звездочкой.</p><pre><code>jenv versions </code></pre><h3>сделанный</h3><hr><h2>быстрая будущая ссылка</h2><p>чтобы изменить версии java </p><p>... смотрите список доступных версий java</p><pre><code>jenv versions </code></pre><p>... затем, где xx соответствует элемент в списке выше</p><pre><code>jenv global xx </code></pre>

<p> <a href="http://sdkman.io/">sdkman!</a> - отличный инструмент для использования нескольких версий java, gradle, groovy, kotlin и других инструментов jvm в mac os. документация по установке и использованию находится прямо на главном сайте.</p><p>(у меня нет принадлежности, просто счастливый пользователь).</p><p>в качестве примера использования, если я введу следующее в окне терминала, появится список доступных версий java sdk (отредактировано для краткости):</p><pre><code>$ sdk list java available java versions + 9ea170 > + 8u131 7u141-zulu здесь + обозначает, что версия установлена. > обозначает, какая версия используется в данный момент. чтобы установить версию:$ sdk install java 7u141-zulu </code></pre><p>чтобы использовать версию в этом окне терминала:</p><pre><code>$ sdk use java 9ea170 

как можно найти на этом <a href="http://javahabit.com/2015/03/30/install-or-manage-multiple-versions-of-java-on-os-x/">сайте итак, начнем с установки jenv запустите это в терминале brew install https://raw.github.com/gcuisinier/jenv/homebrew/jenv.rb  добавить jenv в профиль bash if which jenv > /dev/null; then eval "$(jenv init -)"; fi </code></pre></li> <li><p>при первой установке jenv не будет иметь никакого связанного с ним jdk.</p> <p>например, я только что установил jdk 8, но jenv не знает об этом. чтобы проверить версии java на jenv</p> <p>на данный момент в системе обнаружена только версия java (jre). <code>*</code> показывает выбранную версию. в отличие от rvm и rbenv, jenv не может установить jdk для вас. вам необходимо установить jdk вручную с веб-сайта oracle.</p></li> <li><p>установите jdk 6 с веб-сайта apple. это установит java в <code>/system/library/java/javavirtualmachines/</code>. причина, по которой мы устанавливаем java 6 с веб-сайта apple, заключается в том, что sun не предложила jdk 6 для mac, поэтому apple создала/изменила собственную версию развертывания.</p></li> <li><p>аналогичным образом установите jdk7 и jdk8.</p></li> <li><p>добавить jdks в jenv.</p> <p>jdk 6:</p> <p>jdk 7: <a href="https://i.stack.imgur.com/woedb.png"> <img src="https://i.stack.imgur.com/woedb.png" alt="http://javahabi@javahabit.com/wp-content/uploads/2015/03/img\_5518ab9bc47d4.png"> </a> </p> <p>jdk 8: <a href="https://i.stack.imgur.com/woedb.png"> <img src="https://i.stack.imgur.com/woedb.png" alt="http://javahabi@javahabit.com/wp-content/uploads/2015/03/img\_5518abb2c1217.png"> </a> </p></li> <li><p>проверьте версии java, установленные с помощью jenv</p> <p> <a href="https://i.stack.imgur.com/woedb.png"> <img src="https://i.stack.imgur.com/woedb.png" alt="http://javahabi@javahabit.com/wp-content/uploads/2015/03/img\_5518abceb0deb.png"> </a> </p></li> <li><p>так что теперь у нас есть 3 версии java в нашей системе. чтобы установить версию по умолчанию, используйте команду</p> <pre><code>jenv local <jenv version> </code></pre> <p>я хотел, чтобы jdk 1.6 запустил intellij</p> <pre><code>jenv local oracle64-1.6.0.65 </code></pre></li> <li><p>проверьте версию java</p> <p>java-версия <a href="https://i.stack.imgur.com/woedb.png"> <img src="https://i.stack.imgur.com/woedb.png" alt="http://javahabi@javahabit.com/wp-content/uploads/2015/03/img\_5518abe376dd0.png"> </a> </p></li> </ol><p>это оно. теперь у нас есть несколько версий java, и мы можем легко переключаться между ними. jenv также имеет некоторые другие функции, такие как оболочки для gradle, ant, maven и т. д., а также возможность устанавливать параметры jvm глобально или локально. проверьте документацию для получения дополнительной информации.</p>

<p>я нахожу этот менеджер версий java под названием <a href="https://github.com/shyiko/jabba">jabba</a> недавно, и его использование очень похоже на менеджеры версий других языков, таких как rvm (ruby), nvm (node), pyenv (python) и т.д. кроме того, он кроссплатформенный, так что определенно можно использовать на mac. </p><p>после установки он создаст каталог в ~/.jabba для размещения всех версий java, которые вы устанавливаете. он «поддерживает установку oracle jdk (по умолчанию)/server jre, zulu openjdk (начиная с 0.3.0), ibm sdk, java technology edition (начиная с 0.6.0) и с пользовательских url-адресов». </p><p>основное использование перечислено на их github. краткое резюме для начала: </p><pre><code>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 </code></pre>

<p>я использую mac os x 10.9.5. вот как я управляю несколькими jdk/jre на своем компьютере, когда мне нужна одна версия для запуска приложения a и использование другой версии для приложения b.</p><p>я создал следующий скрипт после получения помощи онлайн.</p><pre><code>#!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 </code></pre><p>я положил вышеупомянутый скрипт в файл .profile. просто откройте терминал, введите vi .profile, добавьте скрипт с приведенным выше фрагментом и сохраните его. после того, как вы наберете <code>source .profile</code>, будет запущен скрипт вашего профиля без перезагрузки терминала. теперь введите <code>java -version</code>, он должен показать 1.7 в качестве текущей версии. если вы намереваетесь изменить его на 1.8, тогда закомментируйте строку <code>setjdk jdk1.7.0\_15.jdk</code> и раскомментируйте строку <code>setjdk jdk1.8.0\_60.jdk</code>. сохраните скрипт и запустите его снова с помощью команды source. я использую этот механизм для управления несколькими версиями jdk/jre, когда мне нужно скомпилировать 2 разных проекта maven, для которых нужны разные версии java.</p>

<p>jenv на mac сьерра:</p><p>если после установки не работает, исправьте эту ошибку, чтобы добавить исполняемый файл java в путь</p><pre><code>export path="$home/.jenv/shims:$path" </code></pre><p>даже если <code>eval "$(jenv init -)" может сделать эту работу. причина в том, что папка/bin больше не существует, как описано на домашней странице, но вместо этого папка shim используется как/bin. убедитесь, что ~/.jenv есть which java может распечатать/библиотека/... jenv global 1.8 jenv shell 1.8 в конце концов, which java дает вам:<blockquote> /users/xxxx/.jenv/shims/java </blockquote>

вот более 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 </code></pre>