我正在寻找一种工具,可以让我切换正在运行的Java实现,例如Ruby的RVM(或RBENV)。我知道 Debian 系统提供了替代机制,我可以手动设置JAVA_HOME。
但是,如果可能的话,我想要一些更自动化的东西。如果它可以获取JDK,那就更好了,但不是必需的。
我已经搜索过,但没有看到类似的东西。我猜Java生态系统已经习惯了在IDE中使用此功能。
编辑:更改路径和JAVA_HOME似乎工作正常。它可以是微不足道的自动化。
有 jenv,基于 Ruby 的 RVM。
您必须通过一些手动步骤来添加新的 Java 版本†,但是一旦它们进入,您就可以使用 jenv use java $version
在它们之间切换。它还处理针对特定 Java 版本安装 Java 应用程序。
还有另一个我没有使用过的工具,令人困惑的是,它也命名为 jenv,但基于 Ruby 的 rbenv。
† 添加Java版本的麻烦似乎是由于Oracle,也许是许可问题,并且似乎适用于这两种工具。
我认为没有这样的工具。每个平台都有自己的系统。Debian/Ubuntu、RedHat/CentOS 和 SLE/OpenSUSE(可能还有其他一些发行版)使用替代机制。Mac OSX有自己的内置切换机制来更改当前使用的JVM。
我必须维护大量的开发人员工作站和服务器。所有基于*nix(OSX,Linux,Solaris)并用于在目录中安装所有JVM,并创建指向应使用版本的符号链接CURRENT。指向此当前符号链接的 JAVA_HOME 和 PATH 变量。如果 Ia 想使用另一个版本,则只有 haf 来移动 CURRENT 符号链接。无需进一步操作。
不幸的是,这种方法不适用于基于Windows的系统。
对于那些在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
完全披露:我是该项目的维护者。
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