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

134

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

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

Ашиш Агарвал
источник

Ответы:

175

Я поставил строку:

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файле.

srkiNZ84
источник
4
Или /usr/lib/jvm/java-1.6.0-openjdk-amd64, если вы используете OpenJDK вместо Oracle (Sun) JDK.
pm_labs
7
Вы можете использовать экспорт JAVA_HOME = / usr / lib / jvm / default-java /
noomz
@noomz Как вы это получите, если default-java не существует?
AHungerArtist
@AHungerArtist Вы получаете это, если устанавливаете openjdk или другие официально поддерживаемые пакеты Ubuntu. К сожалению, он не поддерживается для Oracle JDK с использованием webupd8 / java ppa. На самом деле, мне совершенно неясно, что oracle-java7-set-defaultделает пакет.
Мелвин
Где в файле вы положили это?
Чипперз
166

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

В

/etc/environment

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

JAVA_HOME=/usr/lib/jvm/java-7-oracle
metdos
источник
27
+1 Это рекомендуемый способ help.ubuntu.com/community/EnvironmentVariables
Даниэль Куллманн,
@metdos ответ выше не глобально или на системном уровне?
Android Killer
1
@AndroidKiller Вы проверили ссылку, указанную Даниэлем Куллманом?
metdos
@metdos работает хорошо, но ссылки на переменные у меня не работают ... $JAVA_HOMEне разрешаются при таком использовании PATH=$JAVA_HOME/bin, попытался перезапустить, безрезультатно. Должен ли я exportили set JAVA_HOMEили в этом файле или в моем профиле?
Раффиан
@Raffian Я не уверен насчет разных угловых случаев, так что у меня все получилось
metdos
53

чтобы установить Oracle SE Development Kit в качестве системной версии по умолчанию, просто скачайте последнюю версию 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:

обратите внимание на звездочку перед числами слева, и если правильная не установлена, выберите правильную, набрав ее номер и нажав ввод. Теперь проверьте вашу 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, и оно работает на обоих.

барракуда
источник
1
да, это решение чище, чем принято.
Симона Читтадини
@JayminGajjar комментарии, выражающие благодарность, не нужны. Механизм поддержки хороших вопросов / ответов на этом веб-сайте состоит в том, чтобы поддержать их. Если у вас недостаточно репутации, чтобы сделать это, но у вас достаточно комментариев, пожалуйста, постарайтесь включить в нее некоторую полезную информацию, например, о том, какую систему и какую ОС вы тестировали, и как работает это решение и т. Д.
Barracuda
@ Barracuda, я уже проголосовал, вы правы насчет информации, у меня это работало на Ubuntu 16.10 64-битной ОС сервера :)
Jaymin Gajjar
20

Если вы хотите, чтобы эта переменная среды была доступна всем пользователям и при запуске системы, вы можете добавить следующее в /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).

Jits
источник
12

Ява 6

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

или Java 7

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

Роман Ррн Нестеров
источник
10

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

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::")
user987339
источник
7

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

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

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

prosseek
источник
5

Увидеть это ; бегать

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.

WillC
источник
Другой подход:java -XshowSettings 2>&1 | grep -e 'java.home' | awk '{print "JAVA_HOME="$3}' | sed "s/\/jre//g" >> /etc/environment
XDG