Как установить Java Oracle в качестве Java по умолчанию в Ubuntu?

Как изменить значение JAVA_HOME в Ubuntu, чтобы оно указывало на Oracle Java?

Должен ли он указывать на java-6-sun или java-6-sun-1.6.0.24 ?


person Ashish Agarwal    schedule 25.06.2011    source источник


Ответы (8)


Ставлю строчку:

export JAVA_HOME=/usr/lib/jvm/java-7-oracle

в моем файле ~/.bashrc.

/usr/lib/jvm/java7-oracle должна быть символической ссылкой, указывающей на /usr/lib/jvm/java-7-oracle-[version number here].

Причина, по которой это символическая ссылка, заключается в том, что если есть новая версия JVM, вам не нужно обновлять файл .bashrc, он должен автоматически указывать на новую версию.

Если вы хотите установить JAVA_HOME переменные среды глобально и на системном уровне, значит, использование должно быть установлено в /etc/environment файле.

person srkiNZ84    schedule 25.06.2011
comment
Или /usr/lib/jvm/java-1.6.0-openjdk-amd64, если вы используете OpenJDK вместо Oracle (Sun) JDK. - person pm_labs; 23.11.2012
comment
Вы можете использовать экспорт JAVA_HOME=/usr/lib/jvm/default-java/ - person noomz; 30.05.2013
comment
@noomz Как вы это получите, если default-java не существует? - person AHungerArtist; 09.10.2013
comment
@AHungerArtist Вы получите это, если установите openjdk или другие официально поддерживаемые пакеты Ubuntu. К сожалению, он не поддерживается для Oracle JDK с помощью webupd8/java ppa. На самом деле мне совершенно непонятно, что делает пакет oracle-java7-set-default. - person Melvyn; 23.03.2014
comment
Где в файле вы это помещаете? - person Czipperz; 11.01.2015
comment
если вы хотите, чтобы он работал с Ubuntu update-alternatives в большинстве случаев, то я думаю, что лучший (= наименее плохой) вариант - поместить неустановленный JAVA_HOME в ~/.bashrc. Причина в том, что большинство программ пытаются самостоятельно определить правильный JAVA_HOME, если он не установлен, и одна из первых вещей, которые они пытаются сделать, это посмотреть, куда указывает исполняемый файл java. В остальном вы можете установить JAVA_HOME вручную. По-видимому, Java недостаточно важна для Ubuntu, чтобы поддерживать это из коробки: bugs.launchpad.net/ubuntu/+source/java-common/+bug/45348 - person Jakub Kotowski; 19.02.2015

Если вы хотите изменить его глобально и на системном уровне;

In

/etc/environment

добавьте эту строку:

JAVA_HOME=/usr/lib/jvm/java-7-oracle
person metdos    schedule 06.11.2012
comment
+1 Это рекомендуемый способ help.ubuntu.com/community/EnvironmentVariables - person daniel kullmann; 04.04.2013
comment
@metdos приведенный выше ответ не является глобальным или системным? - person Android Killer; 12.05.2013
comment
@AndroidKiller, вы проверили ссылку, на которую указал Даниэль Куллманн? - person metdos; 12.05.2013
comment
@metdos Работает хорошо, но у меня не работают ссылки на переменные ... $JAVA_HOME не разрешается при таком использовании PATH=$JAVA_HOME/bin, пробовал перезапускать, безрезультатно. Должен ли я export или set JAVA_HOME либо в этом файле, либо в моем профиле? - person raffian; 30.05.2013
comment
@Raffian Я не уверен насчет разных угловых случаев, у меня это сработало идеально, для получения дополнительной информации я бы порекомендовал вам прочитать help.ubuntu.com/community/EnvironmentVariables - person metdos; 30.05.2013
comment
@raffian Почему ты хочешь это сделать? Обычно вы определяете команду java, используя альтернативы обновления, которые уже ссылаются на каталог выполнения Linux по умолчанию. - person keiki; 08.08.2013

чтобы установить Oracle Java SE Development Kit в качестве Java по умолчанию, просто загрузите последнюю версию Java SE Development Kit с здесь затем создайте каталог где-нибудь в вашей файловой системе, например, /usr/java теперь извлеките файлы, которые вы только что скачали, в этот каталог:

$ sudo tar xvzf jdk-8u5-linux-i586.tar.gz -C /usr/java

теперь, чтобы установить переменную среды JAVA_HOME:

$ JAVA_HOME=/usr/java/jdk1.8.0_05/
$ sudo update-alternatives --install /usr/bin/java java ${JAVA_HOME%*/}/bin/java 20000
$ sudo update-alternatives --install /usr/bin/javac javac ${JAVA_HOME%*/}/bin/javac 20000

убедитесь, что java Oracle установлен как java по умолчанию:

$ update-alternatives --config java

вы получаете что-то вроде этого:

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

  Selection    Path                                           Priority   Status
------------------------------------------------------------
* 0            /opt/java/jdk1.8.0_05/bin/java                  20000     auto mode
  1            /opt/java/jdk1.8.0_05/bin/java                  20000     manual mode
  2            /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java   1061      manual mode

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

обратите внимание на звездочку перед цифрами слева и если правильная не установлена, выберите правильную, введя ее номер и нажав Enter. теперь проверьте свою Java:

$ java -version

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

java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) Server VM (build 25.5-b02, mixed mode)

также обратите внимание, что вам может потребоваться разрешение root или быть в группе sudoers, чтобы иметь возможность сделать это. Я тестировал это решение как на Ubuntu 12.04, так и на Debian wheezy, и оно работает в обоих случаях.

person moki    schedule 14.05.2014
comment
да, это решение намного чище, чем принятое. - person simone cittadini; 29.09.2015
comment
Комментарии @JayminGajjar, выражающие благодарность, не нужны. Механизм поддержки хороших вопросов/ответов на этом веб-сайте заключается в голосовании за них. Если у вас недостаточно репутации для этого, но достаточно, чтобы прокомментировать, попробуйте включить в нее некоторую полезную информацию, например, о том, какую систему и какую ОС вы тестировали, и нашли это решение работающим и т. д. - person moki; 16.10.2016
comment
@Barracuda Я уже проголосовал, вы правы насчет информации, у меня это сработало на 64-битной серверной ОС Ubuntu 16.10 :) - person Jaymin Gajjar; 19.10.2016

Если вы хотите, чтобы эта переменная среды была доступна всем пользователям и при запуске системы, вы можете добавить следующее в /etc/profile.d/java.sh (создайте его при необходимости):

export JDK_HOME=/usr/lib/jvm/java-7-oracle
export JAVA_HOME=/usr/lib/jvm/java-7-oracle

Затем в терминальном запуске:

sudo chmod +x /etc/profile.d/java.sh
source /etc/profile.d/java.sh

Мой второй вопрос: должен ли он указывать на java-6-sun или java-6-sun-1.6.0.24?

Он всегда должен указывать на java-7-oracle, так как это символическая ссылка на последнюю установленную (при условии, что вы установили Java из репозиториев Ubuntu, а теперь из загрузки, доступной на oracle.com).

person Jits    schedule 25.06.2011

Ява 6

export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-amd64

или джава 7

export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64

person Roman Rhrn Nesterov    schedule 29.11.2013

Если вы занимаетесь какой-либо разработкой, вам нужно указать на JDK (Java Development Kit). В противном случае вы можете указать на JRE (среда выполнения Java).

JDK содержит все, что есть в JRE, и даже больше. Если вы просто выполняете программы Java, вы можете указать либо JRE, либо JDK.

Вы должны установить JAVA_HOME на основе текущей используемой вами Java. readlink напечатает значение символической ссылки для текущей Java, а sed изменит его на каталог JRE:

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

Если вы хотите настроить JAVA_HOME на JDK, вам нужно подняться еще на одну папку:

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")
person user987339    schedule 13.03.2014

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

Вам нужно использовать sudo update-alternatives --config java для установки Java по умолчанию.

См. https://askubuntu.com/questions/121654/how-to-set-default-java-version.

person prosseek    schedule 27.01.2014

См. это; бегать

sudo  update-java-alternatives --list

чтобы перечислить все установки Java на машине по имени и каталогу, а затем запустить

sudo  update-java-alternatives --set [JDK/JRE name e.g. java-8-oracle]

чтобы выбрать, какую JRE/JDK использовать.

Если вы хотите использовать разные JDK/JRE для каждой задачи Java, вы можете запускать альтернативы обновления для настройки одного исполняемого файла Java за раз; Вы можете запустить

sudo  update-alternatives --config java[Tab]

чтобы увидеть команды Java, которые можно настроить (java, javac, javah, javaws и т. д.). А потом

sudo  update-alternatives --config [javac|java|javadoc|etc.]

свяжет эту задачу/команду Java с конкретным JDK/JRE.

Вам также может потребоваться установить JAVA_HOME для некоторых приложений: из этот ответ вы можете использовать

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

для JRE или

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")

для JDK.

person WillC    schedule 10.02.2016
comment
Другой подход: java -XshowSettings 2>&1 | grep -e 'java.home' | awk '{print "JAVA_HOME="$3}' | sed "s/\/jre//g" >> /etc/environment - person Xdg; 31.05.2017