JAVA_HOME和update-alternatives有什么区别?


13

我一直在尝试找出最佳方法,将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

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

我可以通过粘贴以下内容来使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和使用替代项有什么区别?

Answers:


11

备择方案

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安装$JAVA_HOME。在可能需要多次安装Java的情况下,我喜欢这样做。

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

参考文献


要点是,通过替代方案,我可以使用Java的不同组件。例如,替代可以设置javajavac从另一方面不同的JDK JAVA_HOME=JAVALOCATION将指向javajavac以及javawsjavajavacjavawsJAVALOCATION分别。
Sudhir Khanger 2014年

我问这个问题的原因是如何使用OpenJDK作为默认Java运行时,并使Android Studio,Eclipse和SDK Manager使用Oracle JDK。我可以通过手动编辑启动脚本来更新这三个程序,从而在Oracle JDK下运行这三个程序。我一直在寻找STUDIO_JDK可以添加到~/.profile或的更通用的东西,例如~/.bashrcAndroid Studio用来拾取JDK的东西,但我认为Android Bundle(Eclipse和SDK Manager)不赞成这样做。
Sudhir Khanger 2014年

@donniezazen-是的,这STUDIO_JDK是风俗习惯。我将为这些工具使用替代方法,并将其设置JAVA_HOME为所/usr/bin管理的路径alternatives。执行升级后,alternatives只需进行更改。
slm

我不确定你的建议。点都alternativesJAVA_HOME/usr/bin/java。也似乎是JAVA_HOME覆盖alternatives
Sudhir Khanger 2014年

@donniezazen-是的,可以使用替代方法来管理您的JAVA安装,然后使用并将其JAVA_HOME指向/usr/bin。您是正确的,JAVA_HOME可以独立于进行操作alternatives
slm
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.