Як встановити JAVA_HOME для Java?


303

Я встановив версію Java. Як ми можемо $JAVA_HOMEправильно встановити змінну середовища?

Відповіді:


422

Ви можете встановити JAVA_HOMEв систему, /etc/profileяк Petronilla Escarabajo пропонує. Але кращим місцем розташування для JAVA_HOMEбудь-якої системної змінної є /etc/environment.

Відкрийте /etc/environmentбудь-який текстовий редактор на кшталт nanoабо geditі додайте наступний рядок:

JAVA_HOME="/usr/lib/jvm/open-jdk"

(шлях до Java може бути різним)

Використовуйте sourceдля завантаження змінних, виконавши цю команду:

source /etc/environment

Потім перевірте змінну, виконавши цю команду:

echo $JAVA_HOME

Оновлення

Зазвичай за замовчуванням більшість систем Linux / etc / environment за замовчуванням. Якщо ваша система цього не робить, додайте наступний рядок до ~/.bashrc(Спасибі @pje)

source /etc/environment

2
Коли я намагався запустити Android Studio (у базі якого IntelliJ IDEA), у мене з’явилося повідомлення про помилку, дуже схоже на @ advocate's: "" tools.jar ", схоже, не в класі Studio Android." Поспішивши багато з JAVA_HOME без успіху, я вирішив поглянути на studio.sh, оболонку оболонки, яку запускає Android Studio. Як дикий здогад, я встановив JDK_HOME на те саме значення, яке очікується для JAVA_HOME, і voila! Він встановлений без великих проблем.
Хілтон Фернандес

3
Для тих, хто займається розробкою програмного забезпечення, не ставте свій JAVA_HOME в / etc / environment, якщо ви не хочете перезавантажувати кожного разу, коли ви перемикаєте версії JDK.
HDave

2
Це тимчасове рішення, як вказували інші. Ніхто не захоче запускати джерело кожного разу, коли вони перезапускають баш.
yuranos87

6
Як зазначали інші, це не тримається між термінальними сеансами. Що я зробив для вирішення цього питання, просто додав рядок source /etc/environmentу верхній частині мого файлу bash config, ~/.bashrcщоб він завантажував усі мої налаштування середовища при запуску. Працює для мене поки що.
пе

2
@sedulam Я оновив відповідь
Manula Waidyanatha

79

Щоб встановити JAVA_HOMEзмінну середовища, виконайте наступне:

  1. Запустіть термінал, натискаючи Ctrl+ Alt+ Tна клавіатурі.
  2. Введіть таку команду:
    $gksudo gedit /etc/environment
  3. Залежно від того, де ви встановили свою Java, вам потрібно буде надати повний шлях. Для цього прикладу я встановив Oracle JDK 7 в /usr/lib/jvm/java-7-oracleкаталог.
    Прокрутіть до кінця файлу та введіть наступне:
    JAVA_HOME=/usr/lib/jvm/java-7-oracle
    export JAVA_HOME
  4. Збережіть файл і вийдіть з gedit .
  5. Нарешті, перезавантажте системну PATH за допомогою наступної команди:
    $. /etc/environment

Вищеописаний метод заощадить вам клопоту в тому, що потрібно запускати команди щоразу, коли ви входите на комп’ютер.


5
Як . / тощо / довкілля?
Судіп Бхандарі

1
Чи exportпотрібне додавання команди у /etc/environment?
pkaramol

@pkaramol Мені довелося додати експорт JAVA_HOME 16.04LTS, щоб завантажити його при запуску.
Аден-с

3
@ adeen-s Ви додали exportрядок у, /etc/environmentі це допомогло? Цей файл містить змінні визначення, розібрані на =-делімітовані імена-значення пар; його вміст не виконується як команди. (Див man pam_env.) Отже, якщо ви окремо не ставитесь до файлу як до сценарію (наприклад, переходу /etc/environmentдо bash's ./ sourcebuildin), я б не очікував, що це спрацює.
Елія Каган

> Як це робить. / тощо / довкілля? -. (крапка) завантажує команди з файлу askubuntu.com/a/232938/189965
Роман Беккієв

37

Якщо ви не знаєте шлях і у вас тільки встановлений openJDK, ви можете ввести update-alternatives --config javaта слід знайти шлях. Щоб встановити змінну, яку ви можете написати, JAVA_HOME=<PATH>після чого export JAVA_HOME. Зауважте, що немає місця при оголошенні змінної. Щоб перевірити, чи зберігається змінна, просто введіть її echo $JAVA_HOMEдля підтвердження.


Схоже, це було б статично. Якщо я видалю openjdk-7 і встановлю openjdk-9, чи не буде JAVA_HOME вказувати на неправильне місце? Як це можна зробити динамічним?
DavidJ

3
Вручну змінивши його. Знову ВАС - це те, як стає динамічно ....
HDave

Що означає @HDave, це те, що в деяких випадках ви можете захотіти, щоб JAVA_HOME вказував на конкретну версію Java, тому зробити оновлення JAVA_HOME динамічним може бути не тим, що вам потрібно.
Мацей

мені подобається ця відповідь. Я випробував із відлунням і бачу свій шлях. Однак я збентежений, чому я все ще отримую змінну середовища JAVA_HOME не встановлено, коли я запускаю mvn -version
Winnemucca,

1
Цю відповідь я написав ще тоді, коли був більш невідомий. Встановлення змінної, як описано, вплине лише на поточний сеанс терміналу, і не зберігатиметься. Правильний спосіб - запустити update-alternatives --install <link> <name> <target> <priority> наприклад:update-alternatives --install /usr/bin/java java /usr/lib/jvm/default-runtime/bin/java 1
Erro
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.