Яке значення JAVA_HOME для CentOS?


37

Я встановив java через yum на CentOS, проте інша програма Java повинна знати, що таке змінна середовище JAVA_HOME. Я знаю все про встановлення змінних навколишнього середовища, але на чому я його встановлюю? javaвстановлено /usr/bin/java, його там не може бути!

Відповіді:


54

Насправді я знайшов це,

це /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/. Я дізнався, що це робив, update-alternatives --display javaі він показав мені каталог/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java


20

Я не зовсім впевнений, але якщо встановити звичайний RPMS, значення JAVA_HOME також може бути встановлено таким:

/usr/java/default/

EDIT: Я щойно перевірив домашню систему. Я створив цей файл:

/etc/profile.d/java.sh

Що містить:

export JAVA_HOME=/usr/java/default/

і я використовую офіційну версію від Sun: jdk-1.6.0_12-fcs

EDIT: Ось, як я налаштував Java на своїй машині :

Встановіть Java

Завантажте та встановіть Java JDK від Oracle

Зробіть це первинним

Переконайтеся, що ця Java використовується замість версії OpenJDK за допомогою наступних двох команд:

Спочатку

alternatives --install /usr/bin/java java /usr/java/default/bin/java 999999 \
           --slave /usr/bin/keytool keytool /usr/java/default/bin/keytool \
           --slave /usr/bin/rmiregistry rmiregistry /usr/java/default/bin/rmiregistry

Друге

alternatives --install /usr/bin/javac javac /usr/java/default/bin/javac 999999 \
           --slave /usr/bin/jar jar /usr/java/default/bin/jar \
           --slave /usr/bin/rmic rmic /usr/java/default/bin/rmic

Встановити JAVA_HOME

Переконайтесь, що всі користувачі встановили правильну величину змінної середовища JAVA_HOME:

echo "export JAVA_HOME=/usr/java/default/" > /etc/profile.d/java_home.sh

о цікаво. :)
Рорі

1
У /usr/java/defaultмоєму вікні CentOS 6 немає встановлених OpenJDK 1.6 та 1.7.
Даніель Серодіо

@DanielSerodio Правильно. Я чітко описав "Завантажити та встановити Java JDK з Oracle", і тоді він існує.
Niels Basjes

2

Ви хочете встановити JAVA_HOME як кореневе місце JDK або JRE, наприклад:

export JAVA_HOME=/usr/java/jdk1.3

Якщо встановлений JDK (комплект розвитку), ypu, ймовірно, хоче, щоб він вказував на це, інакше використовуйте шлях JRE (середовище виконання Java). Потім ви можете встановити змінну середовища $ PATH, щоб вона включала також каталог бін:

export PATH=$PATH:/usr/java/jdk1.3/bin

Якщо ви використовуєте tomcat, можливо, вам також знадобиться встановити CATALINA_HOME для користувача tomcat.

export CATALINA_HOME=/path/to/tomcat

Щоб встановити це для системи, потрібно відредагувати / etc / profile або додати .sh файл у папку /etc/profile.d. Для конкретного користувача ви можете розмістити його у файлах ~ / .profile або ~ / .bash_profile.


Цікаво, чи є вагома причина, що установка не зробить це для вас, якщо працювати як супер користувач, я завжди вважаю, що це дратує ...
Кайл Брандт

2

Нижче завжди працює для мене ідеально:

[user@base ~]$ locate bin/java
/usr/bin/java
/usr/bin/javac
/usr/bin/javadoc
/usr/bin/javaws
/usr/java/jdk1.6.0_31/bin/java
/usr/java/jdk1.6.0_31/bin/javac
/usr/java/jdk1.6.0_31/bin/javadoc
/usr/java/jdk1.6.0_31/bin/javah
/usr/java/jdk1.6.0_31/bin/javap
/usr/java/jdk1.6.0_31/bin/javaws
/usr/java/jdk1.6.0_31/jre/bin/java
/usr/java/jdk1.6.0_31/jre/bin/java_vm
/usr/java/jdk1.6.0_31/jre/bin/javaws

Це означає, що я можу встановити JAVA_HOME як /usr/java/jdk1.6.0_31


1

Я розглядав проблему, якщо змінюється версія Java, яка використовується з:

alternatives --config java

Тоді будь-яке жорстке кодування JAVA_HOMEзміниться (принаймні це буде на Centos 6.6, на який я зараз дивлюся). Тобто, немає/usr/java .

Це здається не найкращим способом (відкритим до відмови), але за 10 хвилин, які я витратив на це, це здається найкращим.

В /etc/bashrcя змінив настройки для JAVA_HOMEбути:

export JAVA_HOME=$(alternatives --display java | grep current | sed 's/link currently points to //' | sed 's|/bin/java||')

Вам потрібно зробити щось подібне на MacOSX, але без усього grepі sedпроаналізувати результат. Безумовно, alternativesпропонує аналогічно простіше рішення.

У будь-якому випадку я сподіваюся, що я допоміг.


Оновлення

Ні, не було б JRE_HOME. JDK / SDK не виявляється очевидним (я продовжую шукати).

alternatives, Здається, тільки про JRE за замовчуванням. Я відкладаю на @Niels відповідь або просто встановлюю Java з yumі встановлюю JAVA_HOME на це (фокус у тому, де я знайшов, де це було встановлено!).

yum install java-1.8.0-openjdk-devel.x86_64
cd /usr/lib/jvm 

Я помітив java_1.8.0, що це симпосилання на /etc/alternatives/java_sdk_1.8.0і так встановив свій $ JAVA_HOME /usr/lib/jvm/java_1.8.0. В /etc/bashrc.


0

Це дивно, вся сенс наявності змінної середовища JAVE_HOME полягає в тому, що вам не потрібно вказувати шлях до кожної програми, вона може отримати цей шлях, шукаючи цю змінну.

У будь-якому випадку правильним способом знайти змінну середовища для JAVA_HOME є використання echo:

[root@host ~]# echo $JAVA_HOME
/usr/java/j2sdk1.4.2_09

Запуск цієї команди відобразить шлях, незалежно від версії, яку ви виконуєте, з командного рядка.


2
Змінна не була встановлена.
Рорі

0

re: Centos7, зверніться до файлу /etc/java/java.conf.

в ньому JAVA_HOME вказується на розташування в наступному режимі: / usr / lib / jvm / java

Я перевірив, це правильна версія jdk, яку я завантажував через yum, і так ...

у моїй середовищі за замовчуванням не встановлено JAVA_HOME, тому я встановив його у .bash_profile


0

Я виявив, що менеджер пакунків може розміщуватись у різних місцях, тож використовуючи яке (вам потрібно буде явно встановити це, якщо використовуєте контейнер), наступне - трохи менш крихке

javaCompiler=$(which javac)
javaBin=$(dirname $(readlink -f $javaCompiler))
javaHome=${javaBin%/*}
export JAVA_HOME=$javaHome

або для JRE

javaExec=$(which java)
javaBin=$(dirname $(readlink -f $javaExec))
javaHome=${javaBin%/*}
export JRE_HOME=$javaHome
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.