对于pipe理JDK而言,“替代品”是否比Symlink和$ PATH更好?

我刚刚升级到Fedora 16(来自fedora 12),并且已经读过/被告知,不是通过使用简单的符号链接设置不同的JDK,而是将$ PATH设置为符号链接,我应该使用替代工具。

我不明白的是如何select更好的pipe理你的jdk,当它似乎你将不得不运行:alternatives – configuration不仅'java',而且所有的支持工具(javac,javaws,jstack等) 。 这似乎比较难堪:

(假设$ PATH = / opt / local / java / current / bin:…)

rm /opt/local/java/current ln -s /path/to/unpacked/jdkX /opt/local/java/current 

所以我的问题是:

为什么我听到另一种方法是在较新版本的Fedora中pipe理Java工具的正确方法,因为完全切换JDK看起来要麻烦得多? 我刚刚被告知可怜的信息,还是我错过了一些重要的替代品?

(注意:如果替代方法在某种程度上更好,那么可以自由地采取残酷的行动,我知道我对这个工具基本上一无所知)

一般

如果你知道你只需要换掉一两个工具(例如:java和javac),那么替代方案似乎就是要走的路,因为它是管理应用程序版本的预期方式。

但是,如果您正在使用可能需要设置JAVA_HOME或JDK_HOME值的多个开发工具,或者您不知道工具可能调用哪个jdk实用程序,则似乎将您的jdk路径导出到$ JAVA_HOME,并且把它加入到$ PATH是一个更简单的方法。 它可能不是“正确”的方式,但在Java版本之间切换更快,而且更透明,因为您知道所有的jdk实用程序都将指向相同的版本。

  1. 将新的jdk解压缩到正常的java位置(/opt/local/java/jdk_1.X_XX)
  2. 符号链接您当前的jdk

     ln -s /opt/local/java/jdk_1.X_XX current 
  3. 在〜/ .bash_profile OR〜/ .bashrc中添加

     JAVA_HOME=/opt/local/java/current export JAVA_HOME JDK_HOME=$JAVA_HOME export JDK_HOME PATH=$JAVA_HOME/bin:$PATH export PATH 
  4. 现在,如果您需要切换jdks,则只需交换符号链接即可

     rm /opt/local/java/current ln -s /opt/local/java/new_jdk_directory current 

Ubuntu的具体

看来,在UBUNTU上,这个问题已经通过update-java-alternatives解决了,它将更新给定运行时或开发工具包(JRE / JDK)的所有备选方案。

另一种方法是管理jdks的一个很好的,简单而有效的方法。 如果你想快速的话,你可以切换到所需的版本。 如果你觉得另一个难题,我建议你看看这个页面,以一个很好的方式解释替代方案。

替代品系统允许您使用一个命令同时管理所有这些命令的符号链接, 无需向$PATH添加其他内容。 它还将处理需要符号链接的事物列表(包括不涉及$PATH事物; JDK不仅包含命令)的变化,因为每个版本都记录了需要符号链接的东西。