Переключатель между несколькими версиями Java

При установке Studio Android на Ubuntu 14.04 я получаю сообщение что моя версия Java (javac 1.7.0_79) вызывает проблемы. Я нашел решение того, как установить более новую версию Oracle Java:

sudo apt-add-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

Однако я боюсь, что это могло бы перезаписать мое существующее open-jdk версия Java. Так как я не знаю, какая из моих программ зависит от Java, я боюсь, что это могло разрушить эти другие программы.

Есть ли способ удостовериться apt-get не перезаписывает мой предыдущий Java? Я в основном хотел бы установить обоих и смог бы переключиться между ними вручную, в зависимости от того, в какой версии я нуждаюсь.

66
задан 11 April 2018 в 20:06

5 ответов

Кв. - добирается, не перезапишет существующие версии Java.

Для переключения между установленными версиями Java используйте эти update-java-alternatives команда.

Список все версии Java:

update-java-alternatives --list

Установленная по умолчанию версия Java (нуждается в корневых полномочиях):

sudo update-java-alternatives --set /path/to/java/version

..., где /path/to/java/version один из перечисленных предыдущей командой (например, /usr/lib/jvm/java-7-openjdk-amd64).

<час> Дополнительная информация:

update-java-alternatives инструмент удобства, который использует Debian система альтернатив (update-alternatives) для установки набора ссылок на указанную версию Java (например, java, javac...).

84
ответ дан 22 November 2019 в 23:32

Используйте

sudo update-alternatives --config java

, который перечисляет все установленные версии с текущей активной отмеченной и обеспечивает диалоговое окно для переключения:

There are 3 choices for the alternative java (providing /usr/bin/java).

Selection    Path...
------------------------------------------------------------
  0            /usr/lib/jvm/java-9-oracle/bin/java...
* 1            /usr/lib/jvm/java-7-oracle/jre/bin/java...
  2            /usr/lib/jvm/java-8-oracle/jre/bin/java...
  3            /usr/lib/jvm/java-9-oracle/bin/java...

Press <enter> to keep...[*], or type selection number: 

Использование

export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

для установки $JAVA_HOME от текущей активной версии

50
ответ дан 22 November 2019 в 23:32

На основе ответа от @muet я нашел, что это работало беспрепятственно:

Добавляют это к ~/.bashrc:

export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

Добавляют к псевдонимам:

alias useJava8='yes | sudo apt-get install oracle-java8-set-default && source ~/.bashrc'
alias useJava7='yes | sudo apt-get install oracle-java7-set-default && source ~/.bashrc'

Затем можно переключиться в той же оболочке с помощью только: useJava7 или useJava8

5
ответ дан 22 November 2019 в 23:32

Конфигурирование Java

Можно настроить, при помощи которого версия является значением по умолчанию для использования в командной строке update-alternatives, который справляется, какие символьные ссылки используются для различных команд.

sudo update-alternatives --config java

Вывод посмотрит что-то как следующее.

There are 5 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      auto mode
  1            /usr/lib/jvm/java-6-oracle/jre/bin/java          1         manual mode
  2            /usr/lib/jvm/java-7-oracle/jre/bin/java          2         manual mode
  3            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode
  4            /usr/lib/jvm/java-8-oracle/jre/bin/java          3         manual mode
  5            /usr/lib/jvm/java-9-oracle/bin/java              4         manual mode

Press <enter> to keep the current choice[*], or type selection number:

Можно теперь выбрать число для использования в качестве значения по умолчанию. Это может также быть сделано для других команд Java, таких как компилятор (javac), генератор документации (javadoc), инструмент подписания JAR (jarsigner), и т.д. Можно использовать следующую команду, заполняя команду, которую Вы хотите настроить.

sudo update-alternatives --config command

Установка JAVA_HOME Переменная среды

Много программ, таких как серверы Java, используют переменную среды JAVA_HOME для определения местоположения установки Java.

Скопируйте путь со своей предпочтительной установки и затем откройте/etc/environment, использующий Сублимированный текст или Ваш любимый текстовый редактор.

sudo subl /etc/environment

В конце этого файла добавьте следующую строку, удостоверившись заменять выделенный путь Вашим собственным скопированным путем.

JAVA_HOME="/usr/lib/jvm/java-8-oracle"

Сохраните и выйдите из файла и перезагрузите его: source /etc/environment.
Можно теперь протестировать, была ли переменная среды установлена путем выполнения следующей команды: echo $JAVA_HOME. Это возвратит путь, который Вы просто устанавливаете.

3
ответ дан 22 November 2019 в 23:32

jrunscript может быть недоступна в будущих выпусках, поэтому безопасный выбор использует export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))), как предложено @ThiamTeck. Кроме того, .bashrc необходимо выполнять каждый раз, когда вы изменяете версию Java с помощью команды update-alternative.

0
ответ дан 1 June 2020 в 20:29

Другие вопросы по тегам:

Похожие вопросы: