Я недавно попытался установить новую версию 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, как я делаю это?
С вашей установкой все в порядке, но вам нужна система альтернатив, чтобы установить исполняемый двоичный файл по умолчанию, когда вы просто набираете 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
).
Необходимо использовать 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 является популярным веб-сайтом 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