it-swarm.xyz

Каково значение Java_HOME для CentOS?

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

37
Rory

На самом деле я нашел это,

его /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

54
Rory

Я не совсем уверен, но если вы установите обычную RPMS, значение Java_HOME также может быть установлено на это:

/usr/Java/default/

Правка: Я только что проверил на моей домашней системе. Я создал этот файл:

/etc/profile.d/Java.sh

Это содержит:

export Java_HOME=/usr/Java/default/

и я использую официальную версию от Sun: jdk-1.6.0_12-fcs

РЕДАКТИРОВАТЬ: Вот как я настроил 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
20
Niels Basjes

Ниже всегда работает идеально для меня:

[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

2
prashant

Вы хотите установить Java_HOME в качестве корневого расположения JDK или JRE, например:

export Java_HOME=/usr/Java/jdk1.3

Если JDK (комплект разработчика) установлен, ypu, вероятно, захочет, чтобы он указывал на это, иначе используйте путь JRE (среда выполнения Java). Затем, возможно, вы захотите установить переменную среды $ PATH для включения каталога bin:

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
Kyle Brandt

Я рассмотрел проблему, если кто-то изменит версию 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 предлагает такое же простое решение.

В любом случае, я надеюсь, что помог.


Update

Нет, это будет 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.

1
HankCa

re: Centos7, обратитесь к файлу /etc/Java/java.conf.

в нем указывается, что Java_HOME находится в следующем каталоге:/usr/lib/jvm/Java

я проверил, это правильная версия JDK я загрузил через Yum, и так ...

мой env не имеет Java_HOME, установленного по умолчанию, поэтому я установил его в .bash_profile

0
theRiley

Я обнаружил, что менеджер пакетов может размещаться в разных местах, поэтому, используя which (вам нужно явно установить это, если вы используете контейнер), следующее немного менее хрупко

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
0
Jules Clements

Как ни странно, весь смысл наличия переменной окружения JAVE_HOME заключается в том, что вам не нужно указывать путь к каждой программе, он может получить этот путь путем поиска этой переменной.

В любом случае, правильный способ найти переменную окружения для Java_HOME - использовать echo:

[root@Host ~]# echo $Java_HOME
/usr/Java/j2sdk1.4.2_09

Выполнение этой команды покажет путь независимо от того, какую версию вы используете, из командной строки.

0
Dave Drager