JVM版本管理器

72

有没有Java世界的Ruby版本管理器等效工具?

我正在寻找一种工具,可以让我轻松地下载和安装新的JVM,并在它们之间切换。例如:

jvm install <version>
jvm list //will list installed JVMs on my system
jvm use jdk1.6 //will switch my env to jdk 1.6 version, etc.

2
正如jocull所建议的,我发现sdkman是我用于管理Java版本的最佳工具 https://sdkman.io/ - 0x90
8个回答

38

5
这似乎不支持Windows,是这样吗? - SikoSoft
同样适用于SDKMAN,两者都只支持使用WSL、Cygwin等,因此不支持本机Windows! - Hexception
2
为了完整性,jenv 不能满足轻松安装 JVM 的要求。 - Brad

34

SDKMAN! 是 Java 生态系统的类似工具。支持各种 Java 版本、Scala、Clojure、Kotlin、Groovy 和 Maven、Gradle 等构建工具。

在 Mac 和 Linux 上可用,视你愿意尝试的程度而定,也可能支持 Windows :)


23

如果你使用的是Ubuntu,可以通过命令指定要使用的JVM(仅适用于从apt-get或aptitude安装的JVM):

sudo update-alternatives --config java

或者设置JAVA_HOME。这里有一个很好的教程:

http://vietpad.sourceforge.net/javaonlinux.html


13

由于它(尚)不在可能性列表中,还有asdf
asdf不仅为Java提供版本管理,而且默认情况下具有适用于~400种不同语言和工具的插件,您可以在github上找到更多信息,或者创建自己的插件

以下是一个设置新安装的示例(您也可以安装completion,这样您就不必首先列出版本)。添加了Java插件,安装并配置了特定版本(有适用于adoptopenjdkcorrettodragonwellgraalvmlibericamandrelmicrosoftopenjdkoraclesapmachinesemerutemurintravazulu)作为全局(或本地)版本以使用:

asdf plugin-add java                # Add java Plugin
asdf list-all java                  # List all available java versions
asdf install java temurin-20.0.1+9  # Install specific jdk version
asdf install java temurin-17.0.7+7  # Install another jdk version
asdf global java temurin-17.0.7+7   # Set the global jdk version
asdf local java temurin-20.0.1+9    # Set the local version for calls from the current directory

asdf 使用 $HOME/.tool-versions 文件来配置全局选择的版本。如果您在一个包含不同版本的 .tool-versions 文件的目录中调用任何工具,则会使用该文件中定义的版本(使用 asdf local … 定义)。


11
为了完整起见,这里还有两个 - jabba(我是作者;使用Go编写,并参照nvm/gvm/rvm设计), 以及jenv(请勿与jenv.be混淆;不支持从Oracle安装,但可以从自定义zip文件安装)。

我更喜欢 jenv.be,因为它很简单(安装 JDK 应该是包管理器,而不是版本管理器)。但它只支持类 Unix 系统。 - NanoNova
1
第一个选项似乎被放弃了。 - VimNing
第二个选项似乎也被放弃了。 - Paul Verest

6
使用JVM时,如果需要在它们之间切换,您只需要使用批处理文件(或powershell脚本)来管理类路径和JVM路径。您不需要依赖系统默认的JVM路径,而是允许您的应用程序通过更改运行JVM的shell中的类路径和JVM路径环境来指向任何喜欢的JVM。
对于从注册表获取Java位置的程序,理论上您也可以使用批处理脚本进行更新。
在这方面,Java比“Ruby版本管理器”要容易得多。

0

诀窍是使用update-java-alternatives(来自java-common软件包)。 update-alternatives命令不会更新各种java / bin可执行文件的每个符号链接,这就是为什么update-java-alternatives更好的原因。

因此,要从OpenJDK 6转到7,请使用update-java-alternatives -l获取Java备选项列表,然后使用sudo update-java-alternatives -s java-1.7.0-openjdk-amd64切换JDK。

注意:上述命令可能会引发以下错误:

update-alternatives: error: no alternatives for mozilla-javaplugin.so.
update-java-alternatives: plugin alternative does not exist: 
  /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/IcedTeaPlugin.so

这是因为openjdk插件默认未安装。要修复此问题,请运行sudo apt-get install icedtea-7-plugin,然后重新运行update-java-alternatives。


0
我正在使用JVMS 这里,它非常易于使用,也是我在Windows上找到的唯一一个,它的工作方式类似于RVM。

根据目前的写法,你的回答不够清晰。请编辑以添加更多细节,帮助他人理解这如何回答所提出的问题。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接