Не удалось установить правильную версию Java на Ubuntu 14.10

Я недавно попытался установить новую версию Oracle JDK (1.8), но так или иначе я не могу перезаписать текущую версию Java, используемого системой. Я установил переменную JAVA_HOME для указания на новую установку, добавил его к пути и экспортировал переменные, как показано ниже:

Содержание/etc/profile:

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ "$PS1" ]; then
  if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
    fi
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

# The default umask is now handled by pam_umask.
# See pam_umask(8) and /etc/login.defs.

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi
JAVA_HOME=/usr/local/java/jdk1.8.0_40
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME
export PATH 
~        

Вывод переменных среды:

echo $JAVA_HOME
/usr/local/java/jdk1.8.0_40

echo $PATH 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/java/jdk1.8.0_40/bin

Но вот проблема:

java -version
java version "1.7.0_72"
Java(TM) SE Runtime Environment (build 1.7.0_72-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.72-b04, mixed mode)

which java
/usr/bin/java

javac -version
javac 1.7.0_72

'Java - версия' и javac все еще указывают на исходную установку. Я установил gradle (для которого я сделал обновление во-первых), который указывает на более новую установку.

gradle --version

------------------------------------------------------------
Gradle 1.5
------------------------------------------------------------

Gradle build time: Sunday, June 15, 2014 3:27:36 PM UTC
Groovy: 1.8.6
Ant: Apache Ant(TM) version 1.9.4 compiled on May 9 2014
Ivy: non official version
JVM: 1.8.0_40 (Oracle Corporation 25.40-b25)
OS: Linux 3.16.0-31-generic amd64

Дополнительные ссылки:

update-alternatives --display java
java - auto mode
  link currently points to /usr/lib/jvm/java-7-oracle/jre/bin/java
/usr/lib/jvm/java-7-oracle/jre/bin/java - priority 2
  slave java.1.gz: /usr/lib/jvm/java-7-oracle/man/man1/java.1.gz
Current 'best' version is '/usr/lib/jvm/java-7-oracle/jre/bin/java'.

update-alternatives --display javac
javac - auto mode
  link currently points to /usr/lib/jvm/java-7-oracle/bin/javac
/usr/lib/jvm/java-7-oracle/bin/javac - priority 2
  slave javac.1.gz: /usr/lib/jvm/java-7-oracle/man/man1/javac.1.gz
Current 'best' version is '/usr/lib/jvm/java-7-oracle/bin/javac'.

Как я фиксирую эту путаницу? Любая справка больше всего ценилась бы! Кроме того, если я должен удалить ранее v1.7, как я делаю это?

0
задан 9 March 2015 в 21:11

2 ответа

С вашей установкой все в порядке, но вам нужна система альтернатив, чтобы установить исполняемый двоичный файл по умолчанию, когда вы просто набираете jave или javac. По сути, система альтернатив позволяет вам выбирать двоичный файл для запуска, когда есть много других альтернативных двоичных файлов, имеющих те же функции.

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

sudo update-alternatives --install /usr/bin/java java /usr/local/java/jdk1.8.0_40/bin/java 100
sudo update-alternatives --install /usr/bin/javac javac /usr/local/java/jdk1.8.0_40/bin/javac 100

Эта команда выполнит свою работу, мы связали новые двоичные файлы с альтернативами java и javac, а также установили их по умолчанию, предоставив им более высокий приоритет (100) по сравнению с более старыми версиями (2 - проверено update-alternatives --display java и update-alternatives --display javac, вы также можете использовать update-alternatives --query java).

1
ответ дан 3 August 2019 в 13:22

Необходимо использовать alternatives: способ, которым Ubuntu предлагает поддерживать несколько версий программного обеспечения.

после установки JDK Oracle скажите его альтернативам:

sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.8.0_40/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk1.8.0_40/bin/javac" 1
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.8.0_40/bin/javaws" 1

После установки, выберите альтернативы по умолчанию:

sudo update-alternatives --config java
sudo update-alternatives --config javac
sudo update-alternatives --config javaws

И затем можно выбрать в списке который альтернатива использовать.

WebUpd8 PPA

WebUpd8 является популярным веб-сайтом Ubuntu, и они сохраняют много действительно полезных PPAs. Их PPA Java является большим, потому что должный EULA Oracle, Java Oracle не может быть перераспределен, но PPA запускает установщик JDK (подобный эти flash-installer подход).

Этот PPA является обновленным oftenly и имеет даже Java 9. Так, можно всегда сохранять Java автоматически обновленным и правильно настроенным.

, Чтобы добавить PPA и установить Java8 оттуда:

sudo add-apt-repository ppa:webupd8team/java 
sudo apt-get update
sudo apt-get install oracle-java8-installer
2
ответ дан 3 August 2019 в 13:22

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

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