在开发的过程当中,避免不了多个项目使用的JDK环境不一致。如何在本机安装多个JDK环境,并能作到随时进行切换呢?javascript
安装的过程当中,咱们使用brew
,其官方地址以下:https://brew.sh/。第一次安装后,版本是最新的,但在之后的使用中,可能brew
的版本就过时了。咱们要保证在使用时其版本是最新的,因此每次使用前先执行如下命令以完成升级操做。java
brew update
正式的使用brew
前咱们先简单了解一下它。brew
能为咱们简化在macos
或liunx
中的软件安装过程,至关于macos
系统下的包管理器。咱们知道在MACOS系统的软件大致为两种:一种是命令行式的命令好比curl
,咱们使用brew install curl
来安装。大家敲击一个命令会完成一些操做,它只能在sheel
中使用;另外一种则是应用程序,相对来说比较大,好比XAMPP
,咱们则使用brew cask install XAMPP
来安装;git
在brew
中,对这两种软件进行了分类,小的叫作formulae
,大的叫作cask
。咱们能够在官网中找到其身影。github
地址为:https://formulae.brew.sh/shell
执行brew search java
,咱们发现其对应如下列表。macos
panjiedeMacBook-Pro:~ panjie$ brew search java ==> Formulae app-engine-java javarepl libreadline-java google-java-format jslint4java ==> Casks eclipse-java netbeans-java-se eclipse-javascript oracle-jdk-javadoc java yourkit-java-profiler netbeans-java-ee homebrew/cask-versions/java-beta
在此,咱们想更多的了解Casks
中的java
, 则执行brew cask info java
segmentfault
panjiedeMacBook-Pro:~ panjie$ brew cask info java java: 12.0.2,10:e482c34c86bd4bf8b56c0b35558996b9 https://openjdk.java.net/ Not installed From: https://github.com/Homebrew/homebrew-cask/blob/master/Casks/java.rb ==> Name OpenJDK Java Development Kit ==> Artifacts jdk-12.0.2.jdk -> /Library/Java/JavaVirtualMachines/openjdk-12.0.2.jdk (Generic Artifact)
咱们经过以上信息获得:该cask
对应的是openjdk-12.0.0
,若是咱们计划安装它的话,则使用brew cask install java
来进行安装。bash
除了直接查找java
关键字外,咱们还能够查找jdk
关键字 -> brew serarch jdk
oracle
panjiedeMacBook-Pro:~ panjie$ brew search jdk ==> Casks adoptopenjdk ✔ adoptopenjdk12-openj9-jre-large adoptopenjdk10 adoptopenjdk12-openj9-large adoptopenjdk11 adoptopenjdk8 ✔ adoptopenjdk11-jre adoptopenjdk8-jre adoptopenjdk11-openj9 adoptopenjdk8-openj9 adoptopenjdk11-openj9-jre adoptopenjdk8-openj9-jre adoptopenjdk11-openj9-jre-large adoptopenjdk8-openj9-jre-large adoptopenjdk11-openj9-large adoptopenjdk8-openj9-large adoptopenjdk12 adoptopenjdk9 adoptopenjdk12-jre oracle-jdk adoptopenjdk12-openj9 oracle-jdk-javadoc adoptopenjdk12-openj9-jre sapmachine-jdk
若是你获取的列表中没有adoptopenjdk10
等,请执行brew cask info adoptopenjdk
再按提示执行brew tap adoptopenjdk/openjdk
。我猜想缘由是这样:brew
只收录了adoptopenjdk
最后的版本,一些过时的版本,交由adoptopenjdk
本身管理。而brew tap adoptopenjdk/openjdk
,则是拉取adoptopenjdk
自管理包的信息。
在此,咱们安装两个版本adoptopenjdk12
及adoptopenjdk8
app
brew cask install adoptopenjdk brew cask install adoptopenjdk8
不一样版本的JDK安装好了,如何能作到自由切换呢?首先,咱们使用 /usr/libexec/java_home -V
来查看版本安装信息
panjiedeMacBook-Pro:~ panjie$ /usr/libexec/java_home -V Matching Java Virtual Machines (4): 12.0.2, x86_64: "OpenJDK 12.0.2" /Library/Java/JavaVirtualMachines/adoptopenjdk-12.0.2.jdk/Contents/Home 1.8.0_222, x86_64: "AdoptOpenJDK 8" /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home 1.8.0_152, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk/Contents/Home 1.8.0_151, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home /Library/Java/JavaVirtualMachines/adoptopenjdk-12.0.2.jdk/Contents/Home
获得4条记录,其有两条是刚刚安装的,其它两条是之前安装的oracle
官方的JDK
。其实JDK
切换,本质上切换的JAVA_HOME
这个系统变量。也就是说:JAVA_HOME
当哪一个目录,在执行java
时就会到哪一个目录去找至关的文件,也就起到了切换jdk
版本的目的。在切换前,咱们先输出下当前的JAVA_HOME
来查看一下:
panjiedeMacBook-Pro:~ panjie$ echo $JAVA_HOME /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
liunx系统中,使用
echo $JAVA_HOME$
此时,咱们执行java -version
来核查一下当前的版本号,的确与JAVA_HOME
设置的相对应:
panjiedeMacBook-Pro:~ panjie$ java -version openjdk version "1.8.0_222" OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_222-b10) OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.222-b10, mixed mode)
有了前面的基础自由切换版本就容易了。由于自由切版本,其实就是从新设置环境变量JAVA_HOME
的值:macos
中当用户的环境变量的位置为:~/.bash_profile
,咱们编辑该文件并加入如下信息:
# https://segmentfault.com/a/1190000020177762 alias jdk12="export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-12.0.2.jdk/Contents/Home" alias jdk8="export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home" # 默认JDK jdk8
保存退出后,咱们从新启动一个shell
,分别执行jdk8
,jdk12
:
panjiedeMacBook-Pro:~ panjie$ jdk8 panjiedeMacBook-Pro:~ panjie$ java -version openjdk version "1.8.0_222" OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_222-b10) OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.222-b10, mixed mode) panjiedeMacBook-Pro:~ panjie$ jdk12 panjiedeMacBook-Pro:~ panjie$ java -version openjdk version "12.0.2" 2019-07-16 OpenJDK Runtime Environment AdoptOpenJDK (build 12.0.2+10) OpenJDK 64-Bit Server VM AdoptOpenJDK (build 12.0.2+10, mixed mode, sharing)
版本切换成功。
除此之外,咱们还能够用更加简单的方法来设置此文件(由于安装路径实在是太长了)。首先咱们来到查看安装版本,发现安装的版本有12.0.2
,1.8.0_222
,1.8.0_152
,1.8.0_151
,则能够经过这样的命令来获取其安装路径:
panjiedeMacBook-Pro:~ panjie$ /usr/libexec/java_home -v 1.8.0_222 /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
则~/.bash_profile
能够修改成:
# https://segmentfault.com/a/1190000020177762 alias jdk12="export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-12.0.2.jdk/Contents/Home" # 使用命令`/usr/libexec/java_home -v 1.8.0_222`来替换原路径,也至关于输出了原路径. alias jdk8="export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_222`" jdk8
咱们刚刚只是设置了当前用户的JDK环境。也就是说,若是咱们另外创建一个用户则可能无论用了(系统会给这个用户使用其默认的JDK)。因为咱们的IDEA是可能对每一个项目单元设置JDK
的,因此即便咱们设置了当前用户的JDK
环境,因为未改变项目的JKD
环境,其原来的环境仍然会生效。点击IDEA上方的file
->projetc structure
,来到:
而后new
一个。此时要选择Java home
的路径,若是你不当心忘记了,打开shell
并输入/usr/libexec/java_home -V
来查看便可。设置完成后,该项目便会工做在新的jdk
环境下而与系统的JDK
环境无关了。当使用idea
打开不一样的项目时,idea
会为咱们应用不一样版本的jdk
,咱们也不须要再切环境了。