JAVA_HOME 和 update-alternatives 有什么区别?

Sud*_*ger 16 java alternatives

我一直试图找出将 OpenJDK Java 运行时作为我的 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
Run Code Online (Sandbox Code Playgroud)

我已经使用 Oracle 提供的 rpm 安装了 Oracle JDK 6。

我可以通过在.bashrc.

export JAVA_HOME=/usr/java/jdk1.6.0_45/
export PATH=$JAVA_HOME/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

我注意到 Chrome 仍然使用 OpenJDK(因为我仍然需要链接插件)。

JAVA_HOME 和使用替代品有什么区别?

slm*_*slm 13

备择方案

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
Run Code Online (Sandbox Code Playgroud)

$JAVA_HOME

$JAVA_HOME可以告诉软件查看环境变量的使用情况。将它添加到$PATH只需将现有的可执行文件添加$JAVA_HOME/bin到您的$PATH. 这对于某些应用程序有时是必要的。

这两种机制是相关的,但可以一起使用或相互独立,这实际上取决于 Java 应用程序哪种机制更可取。

我所做的

我通常将其$JAVA_HOME用于某些 GUI 应用程序,但通常仅将其用于使用 Jetty、Tomcat 或 JBOSS 的服务器安装,例如。

对于这些安装,alternatives在设置$JAVA_HOME. 在我可能需要安装多个 Java 的情况下,我喜欢这样做。

替代方案确实允许您让某些工具使用一种 Java 安装,而其他工具使用完全不同的一种。

参考