25

Я установил Java-8. Теперь я хотел вернуться к Java-7 по умолчанию, поэтому я набираю ...

/usr/libexec/java_home -v 1.7.0_40 --exec java -version
/usr/libexec/java_home -v 1.7.0_40 --exec javac -version

Но я все еще вижу ...

java -version
java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b108)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b50, mixed mode)

Это работает ...

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home

Но я бы хотел более постоянное решение.

Кто-нибудь видит, что я делаю не так?

4 ответа4

50

Легко переключать версии

  1. Установите версии 1.6, 1.7, 1.8 в любом порядке. Примечание: я полагаю, что последний установленный определяет, какой из них будет использоваться для плагинов браузера. Я не буду беспокоиться об их изменении ниже.

  2. Затем добавьте в ваш ~/.bashrc или ~/.bash_profile или куда-либо еще:

    #!/bin/bash
    export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
    
    setjdk() {
       export JAVA_HOME=$(/usr/libexec/java_home -v $1)
    }
    
  3. Подтвердите изменение с помощью java -version

    $ java -version
    java version "1.7.0_51"
    Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
    Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
    
    $ setjdk 1.6
    $ java -version
    java version "1.6.0_65"
    Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
    Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)
    
    $ setjdk 1.8
    $ java -version
    java version "1.8.0"
    Java(TM) SE Runtime Environment (build 1.8.0-b132)
    Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
    

Очевидно, что изменение только для продолжительности оболочки. Но вы можете видеть, где вы можете установить это глобально сейчас.

9

Вы можете использовать jEnv (http://www.jenv.be/), который является «инструментом командной строки, который поможет вам забыть, как установить переменную среды JAVA_HOME для переключения между различными версиями JDK» (взятой с домашней страницы проекта ).

Если вы знакомы с Ruby, JEnv похож на RVM или rbenv. Он помогает вам обрабатывать несколько разных JDK, установленных на вашем компьютере, без необходимости писать собственный скрипт для переключения с одного JDK на другой. Вы можете изменить текущую версию Java на основе, например, текущего каталога или файла конфигурации.

4

Вы не можете переключаться между Java-версиями. В документации вы видите:

Одновременно может быть установлена только одна JRE. Система не будет устанавливать JRE с более низкой версией, чем текущая версия. Если вы хотите установить более раннюю версию JRE, сначала удалите текущую версию.

Если вы хотите вернуться к более старой версии, вам нужно удалить Java 8.

0

Я хочу дополнить ответ @ nkadwa. Его предложение сработало, но только после изменения символической ссылки для CurrentSDK. Итак, вот модифицированный код:

setjdk() {
    export JAVA_HOME=$(/usr/libexec/java_home -v $1)
    sudo ln -nsf ${JAVA_HOME%/*} /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
}
setjdk 1.8

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .