Java 是';备选方案';管理JDK真的比使用符号链接和$PATH更好吗?

Java 是';备选方案';管理JDK真的比使用符号链接和$PATH更好吗?,java,linux,fedora,fedora16,Java,Linux,Fedora,Fedora16,我最近刚刚升级到Fedora 16(从Fedora 12升级到Fedora 16),并且读到/被告知,我应该使用替代工具,而不是使用简单的符号链接设置不同的JDK,并将$PATH设置为该符号链接 我不明白的是,当您似乎必须运行时,替代方案如何更好地管理您的jdk:替代方案——不仅为“java”配置,还为所有支持工具(javac、javaws、jstack等)配置。与之相比,这似乎是悲惨的: (假设$PATH=/opt/local/java/current/bin:…) 所以我的问题是: 为什么我

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

我不明白的是,当您似乎必须运行时,替代方案如何更好地管理您的jdk:替代方案——不仅为“java”配置,还为所有支持工具(javac、javaws、jstack等)配置。与之相比,这似乎是悲惨的:

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

所以我的问题是:

为什么我听说替代方案是管理新版本Fedora中java工具的正确方法,而完全切换JDK似乎要麻烦得多?我是刚刚被告知信息贫乏,还是遗漏了一些重要的替代方案


(注意:如果替代方案在某些方面明显更好,请随意使用。我知道我对该工具基本一无所知)

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

备选方案是管理JDK的一种非常好、简单和高效的方法。如果需要,可以快速切换到所需版本。如果您发现备选方案有困难,我建议您查看第页,该页以极好的方式解释了备选方案。

概述 如果您知道只需要更换一两个工具(例如:java和javac),那么替代方法似乎是一种可行的方法,因为它是管理应用程序版本的理想方法

但是,如果您使用的多个开发工具可能需要一个JAVA_HOME或JDK_HOME值集,或者您不知道该工具可能调用哪些JDK实用程序,那么将JDK路径导出到$JAVA_HOME,并将其预加到$path似乎是一种更简单的方法。这可能不是“正确”的方式,但在java版本之间切换更快,而且更透明,因为您知道所有jdk实用程序都将指向同一版本

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

    ln -s /opt/local/java/jdk_1.X_XX current
    
  • 在~/.bash_配置文件或~/.bashrc添加

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

    rm /opt/local/java/current
    ln -s /opt/local/java/new_jdk_directory current
    
  • 特定于Ubuntu的
    在UBUNTU上,这个问题似乎已经解决了,它将更新给定运行时或开发工具包(JRE/JDK)的所有备选方案。

    现在,备选方案如何工作?;-)@pst:我猜你是在挖掘,看看我是否知道替代品确实管理符号链接?如果你熟悉其他选择,并且能够提供一些见解,那就太好了。看来我显然缺少了一些关于这个工具的东西。我如何使用默认java-1.6.0-openjdk中的一个替代命令完全切换到jdk1.6.0_32(位于/opt/local/java/jdk1.6.0_32中)?从我所看到的情况来看,如果我运行类似以下内容:
    alternations--insall/usr/bin/java/opt/local/java/jdk1.6.0_32/bin/java alternations--config java(并切换到右侧#)
    它只更新“java”的可选条目,我还需要为我想要管理的JDK的所有部分再次运行替代方法--安装和--配置。那一页提供了一些有用的信息。我仍然不确定我是否同意替代方案对于管理大规模开发的完整JDK是有意义的。例如,如果使用流行的IDE(aka.Eclipse/IntelliJ/NetBeans),IDE将使用多个java工具(java/javac/jar/etc…),并且通常假定正确的JDK工具在路径上。如果我使用备选方案,那么所有工具都直接位于/usr/bin/中,但是如果我需要切换JDK,我必须为每个工具运行
    alternations--config
    。管理添加到PATH的单个符号链接看起来很干净,确实需要对多个可执行文件运行该命令,但我认为这是值得的,因为期望的结果只是一个命令,你正在帮助自己找到问题的答案“从哪里获取合适的版本?”:)我喜欢使用替代方案,你总是知道你可以找到你所指向的版本,因为它总是what/usr/bin/X->/etc/alternations/X->指向。但是,我通过
    哪个java
    echo$java_HOME
    获得了相同的信息。现在,如果我可以做一些类似于
    的选择——安装-p/path/to/pkg/bin-pkgname
    ,它会为/path/to/pkg/bin/中的每个元素更新/usr/bin中的一个符号链接,我会百分之百支持它。如果我听起来好辩,我道歉。我只是很难看到好处。我必须运行的命令越多,犯的错误就越多。编辑:格式
    rm /opt/local/java/current
    ln -s /opt/local/java/new_jdk_directory current