Чим відрізняється JAVA_HOME від альтернативи оновлення?


13

Я намагаюся знайти найкращий спосіб запустити OpenJDK Java Runtime як Java за замовчуванням для мого вікна Fedora та використовувати Oracle JDK 6 для розробки Android, а саме для роботи з Android SDK Manager, Android Studio та Eclipse з Android Bundle.

Я встановив OpenJDK Java Runtime з сховища Fedora, у якому є наступні альтернативи налаштування.

[donnie@fedora ~]$ alternatives --list | grep java
jre_openjdk             auto    /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.5.1.fc20.x86_64/jre
jre_1.7.0               auto    /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.5.1.fc20.x86_64/jre
java                    auto    /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.5.1.fc20.x86_64/jre/bin/java
libjavaplugin.so.x86_64 auto    /usr/lib64/IcedTeaPlugin.so

Я встановив Oracle JDK 6 за допомогою оборотів, наданих Oracle.

Я можу зробити пакет Android Bundle і Studio використовувати JAVA_HOME для запуску під Oracle JDK, дотримуючись наступного в .bashrc.

export JAVA_HOME=/usr/java/jdk1.6.0_45/
export PATH=$JAVA_HOME/bin:$PATH

Я помітив, що Chrome все ще використовує OpenJDK (оскільки мені ще потрібно зв’язати плагін).

Чим відрізняються JAVA_HOME від використання альтернативних варіантів?

Відповіді:


11

Альтернативи

Альтернативи - це інструмент, який керуватиме місцями встановленого програмного забезпечення за допомогою посилань, що знаходяться під управлінням alternativesінструменту.

Ці посилання в кінцевому підсумку управляються за /etc/alternativesдопомогою проміжних посилань, створених під каталогом $PATH, як правило /usr/bin.

Приклад

$ ls -l /usr/bin/java
lrwxrwxrwx. 1 root root 22 Feb 24 17:36 /usr/bin/java -> /etc/alternatives/java

$ ls -l /etc/alternatives/java
lrwxrwxrwx. 1 root root 73 Feb 24 17:36 /etc/alternatives/java -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.5.0.fc19.x86_64/jre/bin/java

$ JAVA_HOME

$JAVA_HOMEце те, де програмне забезпечення може бути запропоновано переглядати використання змінної середовища. Додавши його до $PATHпросто додає виконувані файли у $JAVA_HOME/binваш $PATH. Іноді це необхідно для певних застосувань.

Два механізми пов'язані між собою, але можуть використовуватися разом або незалежно один від одного, це дійсно залежить від програми Java, який механізм є кращим.

Що я роблю

Зазвичай я використовую $JAVA_HOMEдля деяких додатків графічного інтерфейсу, але, як правило, використовую лише для серверних установок, які використовують, наприклад, Jetty, Tomcat або JBOSS.

Для цих установок я все ще буду використовувати alternativesдля управління установками Java перед встановленням $JAVA_HOME. Мені подобається це робити в тих випадках, коли мені може знадобитися кілька установок Java.

Альтернативи дозволяють певним інструментам використовувати одну установку Java, тоді як інші інструменти використовують зовсім інший.

Список літератури


Піддача полягає в тому, що з альтернативами я можу використовувати різні компоненти Java. Наприклад, альтернативи можна встановити javaі javacз різних JDKs з іншого боку , JAVA_HOME=JAVALOCATIONбуде вказувати java, javacі javawsщоб java, javacі javawsв JAVALOCATION, відповідно.
Sudhir Khanger

Причиною того, що я задав це питання, було те, як я можу використовувати OpenJDK як Java Runtime за замовчуванням і змусити Android Studio, Eclipse та SDK Manager використовувати Oracle JDK. Я можу запустити ці три програми в Oracle JDK шляхом жорсткого редагування їхніх сценаріїв запуску, які можуть бути зламані, якщо вони будуть оновлені. Я шукав щось більш загальне, на зразок STUDIO_JDKякого я можу додати ~/.profileабо ~/.bashrcщо використовується Android Studio для збору JDK, але я думаю, що Android Bundle (Eclipse та SDK Manager) цього не вшануватиме.
Sudhir Khanger

@donniezazen - так, STUDIO_JDKце звичайна річ. Я б використав альтернативи для цих інструментів і встановив JAVA_HOMEби шлях, /usr/binяким керує alternatives. Коли виконується оновлення, alternativesвсе, що потрібно , змінюється .
slm

Я не впевнений, що ви пропонуєте. Вкажіть і те, alternativesі JAVA_HOMEсказати /usr/bin/java. Також здається, що це JAVA_HOMEскасовує alternatives.
Sudhir Khanger

@donniezazen - так, використовуйте альтернативи для керування встановленнями JAVA, а потім використовуйте JAVA_HOME, вказуючи на це /usr/bin. Ви маєте рацію, JAVA_HOMEможете працювати незалежно від alternatives.
slm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.