Як встановити Java Oracle як Java за замовчуванням в Ubuntu?


134

Як змінити значення JAVA_HOMEUbuntu, щоб вказати на Java 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файлі слід встановити використання .


4
Або /usr/lib/jvm/java-1.6.0-openjdk-amd64, якщо ви використовуєте OpenJDK замість JDK Oracle (Sun).
pm_labs

7
Ви можете скористатись експортом JAVA_HOME = / usr / lib / jvm / default-java /
noomz

@noomz Як це зробити, якщо Java-код за замовчуванням не існує?
AHungerArtist

@AHungerArtist Ви отримуєте це, якщо встановити openjdk або інші офіційно підтримувані пакети Ubuntu. На жаль, він не підтримується для Oracle JDK за допомогою webupd8 / java ppa. Насправді мені цілком незрозуміло, чим oracle-java7-set-defaultзаймається пакет.
Мельвін

Де у файлі ви це помістили?
Czipperz

166

Якщо ви хочете змінити це на глобальному рівні та на системному рівні;

В

/etc/environment

додати цей рядок:

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

27
+1 Це рекомендований спосіб help.ubuntu.com/community/EnvironmentVariables
daniel kullmann

@metdos наведена вище відповідь не на глобальному рівні чи на системному рівні?
Android Killer

1
@AndroidKiller Ви перевіряли посилання, на яке вказав Даніел Кулльман?
metdos

@metdos Приємно працює, але посилання на змінні не працює для мене ... $JAVA_HOMEне вирішується при такому використанні PATH=$JAVA_HOME/bin, спробував перезапустити, ефекту немає. Чи потрібно мені exportчи set JAVA_HOMEв цьому файлі чи в моєму профілі?
raffian

@Raffian Я не впевнений у різних кутових випадках, таким чином він прекрасно працював для мене, для отримання додаткової інформації я б рекомендував вам прочитати help.ubuntu.com/community/EnvironmentVariables
metdos

53

встановити пакет програм для розробки Java SE Oracle в якості системи по замовчуванням Java просто завантажити останню версію пакету програм для розробки Java SE від сюди потім створити каталог де - то , як в файлової системі, наприклад , в /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, і воно працює в обох.


1
так, це рішення набагато чистіше, ніж прийняте.
simone cittadini

@JayminGajjar коментарі, які виражають подяку, не потрібні. Механізм підтримки хороших запитань / відповідей на цьому веб-сайті полягає в тому, щоб їх покращити. Якщо ви не маєте достатньої репутації для цього, але у вас є достатньо коментарів, будь ласка, спробуйте включити в неї якусь корисну інформацію, як про те, яку систему та яку ОС ви протестували, і знайдіть це рішення працює і т. Д.
Barracuda

@Barracuda Я вже підкреслив голову, ти прав про інформацію, це працювало для мене на Ubuntu 16.10 64-бітна ОС Server :)
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).



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::")

7

Якщо ви хочете використовувати конкретну версію Java, коли встановлено кілька JDK, просто встановити JAVA_HOME може не працювати.

Потрібно використовувати sudo update-alternatives --config javaдля встановлення Java за замовчуванням.

Зверніться до /ubuntu/121654/how-to-set-default-java-version .


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.


Ще один підхід:java -XshowSettings 2>&1 | grep -e 'java.home' | awk '{print "JAVA_HOME="$3}' | sed "s/\/jre//g" >> /etc/environment
Xdg
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.