管理JDK的'替代品'真的比Symlink和$ PATH更好吗?

时间:2012-05-11 14:44:17

标签: java linux fedora fedora16

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

我不明白的是,当你似乎必须运行时,替代方案如何更好地管理你的jdk:alternative --config不仅适用于'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中管理Java工具的正确方法,因为完全切换JDK似乎要麻烦得多?我刚被告知可怜的信息,还是我遗漏了一些关于替代品的重要信息?

(注意:如果替代品在某些方面明显更好,请随意残酷。我知道我对这个工具一无所知)

3 个答案:

答案 0 :(得分:3)

一般

如果你知道你只需要换掉一个或两个工具(例如: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 add

    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
    
  5. Ubuntu Specific

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

答案 1 :(得分:1)

替代方案是管理jdks的一种简单,有效且高效的方法。如果您想快速,可以切换到所需的版本。如果您发现其他困难,我建议您查看this页面,该页面以一种很好的方式解释了备选方案。

答案 2 :(得分:0)

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