【问题标题】:'RVM-like' tool for Java用于 Java 的“类 RVM”工具
【发布时间】:2012-04-20 03:13:01
【问题描述】:

我正在寻找一种可以让我切换正在运行的 Java 实现的工具,例如 Ruby 的 RVM(或 RBENV)。我知道 Debian 系统提供了替代机制,并且我可以手动设置 JAVA_HOME。

但是,如果可能的话,我想要更自动化的东西。如果它可以获取 JDK,那就更好了,但不是必需的。

我已经搜索过,但没有看到类似的东西。我猜 Java 生态系统已经习惯了在 IDE 中拥有这个功能。

编辑:更改 PATH 和 JAVA_HOME 似乎工作正常。它可以是微不足道的自动化。

【问题讨论】:

  • 尽管各种系统供应商努力使其更加复杂化,但事实是您可以安装任意数量的 JDK,很简单,每个都在自己的目录中,然后调整 PATH - 就是这样。
  • 你已经用 Maven 和 Ant 标记了这个问题,你愿意为构建做这个吗?或者只是在跑步时?也许无关紧要,但如果你有 Java 1.7,你总是可以编译与 1.4、1.5、1.6 等兼容的二进制文件。我知道 Jenkins 确实按版本隔离 JDK,你可以在作业级别指定一个。
  • @Kal 动机是自动化测试。例如,在多个 JDK 上编译/运行测试套件。例如,甚至可能将 OpenJDK 与 Oracle 的 JDK 混合以确保兼容性。
  • @ErnestFriedman-Hill 谢谢。我会尝试并报告。

标签: java maven ant build continuous-integration


【解决方案1】:

jenv,基于 Ruby 的 RVM。

您必须通过一些手动步骤来添加新的 Java 版本†,但一旦它们加入,您可以使用 jenv use java $version 在它们之间切换。它还处理针对特定 Java 版本安装 Java 应用程序。

还有一个我没有使用过的工具,令人困惑的是,它也被命名为jenv,但它基于 Ruby 的 rbenv。

† 添加 Java 版本的麻烦似乎是由于 Oracle,可能是许可问题,并且似乎适用于这两种工具。

【讨论】:

    【解决方案2】:

    我认为没有这样的工具。每个平台都有自己的系统。 Debian/Ubuntu、RedHat/CentOS 和 SLE/OpenSUSE(可能还有其他一些发行版)使用 alternative 机制。 Mac OSX 有自己的内置切换机制来更改当前使用的 JVM。

    我必须维护大量的开发人员工作站和服务器。所有基于 *nix(OSX、Linux、Solaris)的,用于将所有 JVM 安装在一个目录中,并创建一个符号链接 CURRENT 到应该使用的版本。指向此 CURRENT 符号链接的 JAVA_HOME 和 PATH 变量。如果 Ia 想使用另一个版本,只需移动 CURRENT 符号链接。无需采取进一步措施。

    很遗憾,这种方法不适用于基于 Windows 的系统。

    【讨论】:

    • 使用哪个JDK只与环境变量有关。也许为不同的平台编写脚本来改变变量可能是一种方法。对于 *nix,脚本可以简单地为 jdk 版本取一个参数,并自动删除旧的符号链接并创建新的符号链接;对于 Windows,也许批处理文件可以修改 JAVA_HOME 之类的变量,只要它没有被 UAC 阻止...
    • 我将运行更改 JAVA_HOME 和 PATH 的实验。可能就够了。
    【解决方案3】:

    对于那些在 2016+ 年寻找此类工具的人 - 试试 jabba。它是在 nvm/gvm/rvm 之后设计的(实际上 CLI 几乎与 nvm 相同)。

    jabba install 1.8 # "jabba use 1.8" will be called automatically 
    jabba ls # list all installed jdk's
    jabba use 1.6 # switch to a different version of jdk 
    

    完全披露:我是该项目的维护者。

    【讨论】:

      【解决方案4】:

      SDKman 是要走的路:

      The Software Development Kit Manager
      
      SDKMAN! is a tool for managing parallel versions of multiple Software Development Kits on most Unix based systems. It provides a convenient Command Line Interface (CLI) and API for installing, switching, removing and listing Candidates. Formerly known as GVM the Groovy enVironment Manager, it was inspired by the very useful RVM and rbenv tools, used at large by the Ruby community. 
      

      https://sdkman.io/

      特别提到RVM,和RVM一样,通过curl安装:

      现在就开始吧!

      在终端中继续粘贴并运行以下命令:

      $ curl -s "https://get.sdkman.io" | bash 
      

      【讨论】:

        猜你喜欢
        • 2011-06-08
        • 2013-03-19
        • 2012-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多