有没有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.
http://www.jenv.be/将允许这种类型的控制。
SDKMAN! 是 Java 生态系统的类似工具。支持各种 Java 版本、Scala、Clojure、Kotlin、Groovy 和 Maven、Gradle 等构建工具。
在 Mac 和 Linux 上可用,视你愿意尝试的程度而定,也可能支持 Windows :)
如果你使用的是Ubuntu,可以通过命令指定要使用的JVM(仅适用于从apt-get或aptitude安装的JVM):
sudo update-alternatives --config java
或者设置JAVA_HOME。这里有一个很好的教程:
由于它(尚)不在可能性列表中,还有asdf。
asdf不仅为Java提供版本管理,而且默认情况下具有适用于~400种不同语言和工具的插件,您可以在github上找到更多信息,或者创建自己的插件。
以下是一个设置新安装的示例(您也可以安装completion,这样您就不必首先列出版本)。添加了Java插件,安装并配置了特定版本(有适用于adoptopenjdk
、corretto
、dragonwell
、graalvm
、liberica
、mandrel
、microsoft
、openjdk
、oracle
、sapmachine
、semeru
、temurin
、trava
、zulu
)作为全局(或本地)版本以使用:
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 …
定义)。
诀窍是使用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。