7

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

我不明白替代方案如何更好地管理您的 jdk,当您似乎必须运行时:alternatives --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 似乎要麻烦得多?我刚刚被告知信息很差,还是我错过了一些关于替代品的重要信息?

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

4

3 回答 3

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 或 ~/.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)的所有替代方案。

于 2012-06-11T13:27:58.640 回答
1

Alternative 是管理 jdks 的一种出色、简单且有效的方式。如果需要,您可以快速切换到所需的版本。如果您发现替代方案很困难,我建议您查看页面,该页面以出色的方式解释了替代方案。

于 2012-05-11T21:04:07.350 回答
0

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

于 2012-05-11T14:49:29.630 回答