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

126

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

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

Теги:
java-home

8 ответов

166
Лучший ответ

Я положил строку:

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. Подробнее.

  • 4
    Или /usr/lib/jvm/java-1.6.0-openjdk-amd64, если вы используете OpenJDK вместо Oracle (Sun) JDK.
  • 7
    Вы можете использовать экспорт JAVA_HOME = / usr / lib / jvm / default-java /
Показать ещё 4 комментария
168

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

В

/etc/environment

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

JAVA_HOME=/usr/lib/jvm/java-7-oracle
  • 27
    +1 Это рекомендуемый способ help.ubuntu.com/community/EnvironmentVariables
  • 0
    @metdos ответ выше не глобально или на системном уровне?
Показать ещё 4 комментария
45

чтобы установить 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

убедитесь, что Oracle java установлен как 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, и он работает в обоих из них.

  • 1
    Это правильный ответ. Спасибо!
  • 1
    да, это решение чище, чем принято.
Показать ещё 3 комментария
19

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

12

java 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

9

Если вы делаете какие-либо разработки, вам нужно указать на 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::")
7

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

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

Обратитесь к https://askubuntu.com/questions/121654/how-to-set-default-java-version.

3

Смотрите этот; запустить

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.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню