brew java 切换_macos 安装多版本JDK并进行切换

本文介绍了如何在MacOS上利用brew安装和切换多个JDK版本,包括采用`brew cask`安装OpenJDK,通过`/usr/libexec/java_home -V`查看已安装版本,以及通过编辑`.bash_profile`设置别名来实现JDK版本的快速切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开发的过程中,避免不了多个项目使用的JDK环境不一致。如何在本机安装多个JDK环境,并能做到随时进行切换呢?

安装JDK

安装的过程中,我们使用brew,其官方地址如下:https://brew.sh/。第一次安装后,版本是最新的,但在以后的使用中,可能brew的版本就过期了。我们要保证在使用时其版本是最新的,所以每次使用前先执行以下命令以完成升级操作。brew update

正式的使用brew前我们先简单了解一下它。brew能为我们简化在macos或liunx中的软件安装过程,相当于macos系统下的包管理器。我们知道在MACOS系统的软件大体为两种:一种是命令行式的命令比如curl,我们使用brew install curl来安装。你们敲击一个命令会完成一些操作,它只能在sheel中使用;另一种则是应用程序,相对来讲比较大,比如XAMPP,我们则使用brew cask install XAMPP来安装;

在brew中,对这两种软件进行了分类,小的叫做formulae,大的叫做cask。我们可以在官网中找到其身影。

查找JAVA

执行brew search java,我们发现其对应以下列表。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 javapanjiedeMacBook-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来进行安装。

查找JDK关键字

除了直接查找java关键字外,我们还可以查找jdk关键字 -> brew search jdkpanjiedeMacBook-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及adoptopenjdk8brew 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/Homeliunx系统中,使用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

在IDEA中设置项目JDK

我们刚刚只是设置了当前用户的JDK环境。也就是说,如果我们另外建立一个用户则可能不管用了(系统会给这个用户使用其默认的JDK)。由于我们的IDEA是可能对每个项目单元设置JDK的,所以即使我们设置了当前用户的JDK环境,由于未改变项目的JKD环境,其原来的环境仍然会生效。点击IDEA上方的file->projetc structure,来到:

然后new一个。此时要选择Java home的路径,如果你不小心忘记了,打开shell并输入/usr/libexec/java_home -V来查看即可。设置完成后,该项目便会工作在新的jdk环境下而与系统的JDK环境无关了。当使用idea打开不同的项目时,idea会为我们应用不同版本的jdk,我们也不需要再切环境了。

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值