Java

JAVA_HOME 和 update-alternatives 有什麼區別?

  • April 6, 2014

我一直在嘗試找出將 OpenJDK Java Runtime 作為我的 Fedora 機器的預設 Java 並使用 Oracle JDK 6 進行 Android 開發的最佳方法,即從 Android Bundle 執行 Android SDK Manager、Android Studio 和 Eclipse。

我從 Fedora 儲存庫安裝了 OpenJDK Java Runtime,該儲存庫具有如下設置選項。

[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 提供的 rpm 安裝了 Oracle JDK 6。

我可以通過在.bashrc.

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

我注意到 Chrome 仍然使用 OpenJDK(因為我仍然需要連結外掛)。

JAVA_HOME 和使用替代品有什麼區別?

備擇方案

Alternatives 是一種工具,它將使用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用於一些 GUI 應用程序,但通常只將它用於使用 Jetty、Tomcat 或 JBOSS 的伺服器安裝。

對於這些安裝alternatives,在設置$JAVA_HOME. 在我可能需要安裝多個 Java 的情況下,我喜歡這樣做。

替代方案確實允許您讓某些工具使用一種 Java 安裝,而其他工具使用完全不同的一種。

參考

引用自:https://unix.stackexchange.com/questions/123412