Java开发人员经常发生这种情况。有时,您想学习和探索Java的最新版本,但是由于您和您的团队使用的是旧版本(例如Java 8),并且您不想意外中断项目,因此无法将其安装在计算机上。
或者,假设您正在处理多个项目,其中一些使用Java 8,而某些则是使用Java 11的新项目。因此,要在这两个项目上工作,您将需要在Windows上安装多个JDK版本。您的机器,并能够在它们之间进行切换。
如果有一种方法可以安装多个Java版本并根据您的需要打开和关闭不同的版本,该怎么办。
SDKMan!是用于在大多数基于Unix的系统上管理多个S软件开发套件的并行版本的 工具。它提供了方便的命令行界面(CLI)和API,用于安装,切换,删除和列出候选人。 关于SDKMan的一些要点如下:
安装SDKMan SDKMan可以在任何基于UNIX的平台上运行,例如Mac OSX,Linux,Cygwin,Solaris和FreeBSD,我们可以使用以下命令进行安装:
$ curl -s "https://get.sdkman.io" | bash $ source "$HOME/.sdkman/bin/sdkman-init.sh"
我们可以使用sdk version和sdk help命令验证安装,这将为我们提供有关sdk 命令用法的完整帮助 。
因为SDKMan是用bash编写的, 并且仅要求 curl和 zip / unzip出现在系统上,所以您也可以通过在Windows环境中首先安装Cygwin或 Git Bash然后运行上述命令,在Windows上安装SDKMan 。
使用SDKMan安装Java SDKMan支持为JVM安装29个软件开发套件,例如Java,Groovy,Scala,Kotlin,Ceylon,Grails,SBT,Spark,Spring Boot。我们可以使用sdk list命令获取完整列表 。
SDKMan还可以帮助我们安装构建工具,例如Ant,Maven和Gradle。您可以在Java Build Tools比较中阅读有关这些构建工具的更多信息:Ant vs. Maven vs Gradle。
Ant vs. Maven vs Gradle
Commandsdk list java 将为我们提供可以使用SDKMan安装的Java版本的列表,如下所示:
sdk list java
$ sdk list java ================================================================================ Available Java Versions ================================================================================ 13.ea.02-open 1.0.0-rc-10-grl 12.ea.26-open 1.0.0-rc-9-grl 11.0.2-zulu 1.0.0-rc-8-grl 11.0.2-open 11.0.1-zulufx 10.0.2-zulu 10.0.2-open 9.0.7-zulu 9.0.4-open 8.0.202-amzn 8.0.201-zulu 8.0.201-oracle 8.0.192-zulufx 7.0.181-zulu 1.0.0-rc-11-grl ================================================================================ + - local version * - installed > - currently in use ================================================== =============================
现在,假设我们要安装Java v9的OpenJDK版本,那么我们将在终端中执行以下命令,该命令还将更新 PATH和 JAVA_HOME 变量:
$ sdk install java 9.0.4-open
该命令将花费一些时间,因为它将在我们的计算机上下载JDK,并且该命令将输出如下内容:
Downloading: java 9.0.4-open In progress... ######################################################################## 100.0% Repackaging Java 9.0.4-open... Done repackaging... Cleaning up residual files... Installing: java 9.0.4-open Done installing! Setting java 9.0.4-open as default.
现在,如果我们检查Java版本和 JAVA_HOME,我们可以看到Java已更新至9.0.4。
JAVA_HOME
$ java -version openjdk version "9.0.4" OpenJDK Runtime Environment (build 9.0.4+11) OpenJDK 64-Bit Server VM (build 9.0.4+11, mixed mode) $ echo $JAVA_HOME /Users/xbbnrde/.sdkman/candidates/java/current
我们可以按照相同的过程来安装任何版本,可以在上面的列表中看到。让我们假设我们要安装Java V11版本,那么我们可以执行以下命令:
$ sdk install java 11.0.2-open Downloading: java 11.0.2-open In progress... ######################################################################## 100.0% Repackaging Java 11.0.2-open... Done repackaging... Cleaning up residual files... Installing: java 11.0.2-open Done installing! Do you want java 11.0.2-open to be set as default? (Y/n): Y Setting java 11.0.2-open as default.
现在,如果再次检查Java版本和 JAVA_HOME,我们可以看到Java已更新为11.0.2:
$ java -version openjdk version "11.0.2" 2019-01-15 OpenJDK Runtime Environment 18.9 (build 11.0.2+9) OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode) $ echo $JAVA_HOME /Users/xbbnrde/.sdkman/candidates/java/current
注意:有时,您需要关闭并重新打开终端才能看到所做的更改。 sdkman同时安装并运行多个Java版本Java11和Java-9
将SDKMan指向您现有的已安装Java版本 首先,我们需要找出Java在您的计算机上的安装位置。在我的机器上,它安装在该文件夹jdk1.8.0_172.jdk, 下的文件夹中/Library/Java/JavaVirtualMachines;让我们将此文件夹称为 。
我们要做的第二件事是在已安装的SDKMa和SDKMa之间建立符号链接。我们可以通过运行以下命令来做到这一点:
$ ln -s / Library / Java / JavaVirtualMachines / <java-folder>〜/ .sdkman / candidates / java / <java-folder> $ sudo ln -s / Library / Java / JavaVirtualMachines / <java-folder> / Contents / Home / bin〜/ .sdkman / candidates / java / <java-folder> / bin
现在,如果再次执行 sdk list java 命令,将得到:
================================================== ============================= Available Java Versions ================================================================================ + jdk1.8.0_172.jd 8.0.201-zulu 13.ea.02-open 8.0.201-oracle 12.ea.26-open 8.0.192-zulufx 11.0.2-zulu 7.0.181-zulu > * 11.0.2-open 1.0.0-rc-12-grl 11.0.2.j9-adpt 1.0.0-rc-11-grl 11.0.2.hs-adpt 1.0.0-rc-10-grl 11.0.1-zulufx 1.0.0-rc-9-grl 10.0.2-zulu 1.0.0-rc-8-grl 10.0.2-open 9.0.7-zulu * 9.0.4-open 8.0.202-amzn 8.0.202.j9-adpt 8.0.202.hs-adpt ================================================================================ + - local version * - installed > - currently in use ================================================== =============================
我们可以清楚地看到,我们的计算机上已经安装了三个JDK,并且到目前为止,JDK11.0.2-open 正在使用中。但是,如果我们要在它们之间切换或安装新的,则可以使用sdk use java <version_which_you_want_to_use> 以下方法非常容易地做到这一点:
sdk use java <version_which_you_want_to_use>
使用Java 9
$ sdk use java 9.0.4-open Using java version 9.0.4-open in this shell. $ java -version openjdk version "9.0.4" OpenJDK Runtime Environment (build 9.0.4+11) OpenJDK 64-Bit Server VM (build 9.0.4+11, mixed mode)
使用本地安装的Java 8
$ sdk use java jdk1.8.0_172.jdk Using java version jdk1.8.0_172.jdk in this shell. $ java -version java version "1.8.0_172" Java(TM) SE Runtime Environment (build 1.8.0_172-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)
使用Java 11
$ sdk use java 11.0.2-open Using java version 11.0.2-open in this shell. $ java -version openjdk version "11.0.2" 2019-01-15 OpenJDK Runtime Environment 18.9 (build 11.0.2+9) OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
使用该 sdk use命令将仅使您能够在执行sdk use命令的同一终端外壳中使用指定版本的JDK 。而且,如果您关闭终端并再次打开它,则将使用以前安装的版本。 但是,如果要为所有终端和应用程序激活一种版本的JDK,则可以使用以下命令 sdk default java <your_version>.
sdk default java <your_version>.
$ sdk default java 11.0.2-open Default java version set to 11.0.2-open $ java -version openjdk version "11.0.2" 2019-01-15 OpenJDK Runtime Environment 18.9 (build 11.0.2+9) OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
或者,您可以卸载该版本并再次安装,如下所示,这会将该版本设置为当前的JDK。
卸载JDK版本 如果要卸载任何JDK版本,例如 11.0.2-open ,可以执行以下操作:
$ sdk uninstall java 11.0.2-open
并且,如果您想重新安装卸载的版本,可以再次安装它,这一次,SDKMan将不会下载它,因为它已经在您的计算机上安装了它(除非您不手动删除它)。
$ sdk install java 11.0.2-open Found a previously downloaded java 11.0.2-open archive. Not downloading it again... Installing: java 11.0.2-open Done installing! Do you want java 11.0.2-open to be set as default? (Y/n): y Setting java 11.0.2-open as default.
从IntelliJ IDEA使用SDKMan安装的JDK SDKMan将所有JDK安装在该 .sdkman/candidates/java/ 文件夹下,您可以.sdkman在主目录中找到该 文件夹。
在IntelliJ中打开任何Java项目后,您可以按Command + :打开项目结构窗口。在该窗口中,您将需要点击New...下的Project SDK部分,在那里,你可以输入.sdkman/candidates/java/在浏览器窗口,然后从任何JDK .sdkman/candidates/java/。
JDK .sdkman/candidates/java/
因为它.sdkman是一个隐藏文件夹,并且如果您在找到它时遇到一些问题,则始终可以使用以下命令使用非隐藏文件夹创建指向该文件的符号链接:
.sdkman
$ LN -s〜/ .sdkman〜/ sdkman
原文链接:http://codingdict.com